Scrapping the DCPU (a sensationalist headline!)

Talk about the project. Anything you want, it does not have to be about the actual development.

Scrapping the DCPU (a sensationalist headline!)

Postby croxis » Fri Oct 04, 2013 9:50 pm

In irc today we had a fairly long discussion about the dcpu and emulated programmable cpus in general. There were a lot of conversations with a lot of different viewpoints and values. If I missed anything, misrepresented something or if anyone has anything to add please post here.

One of the key features of 0x10^C was a programmable cpu, the dcpu. It is a very nifty and appealing concept; build a ship, program it, then fly it. Yet I noticed a number of people developing alternative cpu specs. So I prodded the room about it and a big discussion resulted.

One of the reasons to keep the dcpu is that there is an existing ecosystem around it and it is simply a matter of folding that ecosystem and knowledge into the game to produce nice programs for all the players who are not programmers. There are apparently problems with the dcpu spec (this is beyond my knowledge so others will have to speak up here) hence the activity with alternative cpu emulation. I brought up that it is a bad idea to have multiple cpu architectures in the game. Managing one would be hard enough for most players and result in fragmentation of the programs made, which will also negatively impact players.

With the dcpu being considered for removal, and taking away the advantage of the existing ecosystem, it raises some interesting questions. Developing programs for an in game cpu isn't "just" programming but assembly programming which is another level of difficulty. If the target audience for the game is professional programmers then this is a worthwhile endeavor, but if we want the target audience a bit wider to include non programmers then why are we spending so much development time, and game processing time, emulating a cpu when only a small minority of players will be interacting with that mechanic directly.

Another option that was brought up is to simulate a programmable OS instead of at the machine level. An example of this is the ComputerCraft mod for minecraft. It adds computer blocks to minecraft with a lua OS. Players can then attach wires, redstone, assorted hardware like screens or disk drives. Programs can be put on floppies and ran -- all of this very much like the end result features we are looking for in a programmable cpu. The advantage here is increased accessibility -- more people are able to participate in the direct programming their ships and not stuck in using stock default programs.


I've never coded much past some python and a simple minecraft bukkit java plugin. To be honest I like the idea of programming a ship, but doing it in assembly didn't excite me. The most interaction I would probably have with the dcpu is using existing premade programs. I don't know how easy it would be to write "if detected ship badguy, turn guns and shoot, turn ship and run" in asm. If it is with reach for someone like me then sure, lets keep an emulated cpu. But if there are a lot of concepts to learn before even getting to writing a basic but functional program for a ship then I'll look forward to other gameplay elements I find interesting.
croxis
 
Posts: 277
Joined: Tue Aug 13, 2013 1:37 am

Re: Scrapping the DCPU (a sensationalist headline!)

Postby Zardoz » Fri Oct 04, 2013 10:05 pm

The idea of the simulation at machine level, was that the computer geeks will create stuff (OS, programs, etc...) that the not computer geeks could use without programing. We can see it with the DCPU-16, were we grab compilers, OS, and programs for it.

I'm pro-machine level, as I love working at this level, but with hardware guts that not come too complex. But I must agree that working at level of a Lua OS or something similar could be more efficient (but less funy and less hack capacity)

In the discussion about scrapping the DCPU-16, I'm favor to it, but trying to get something more realistic (but avoiding complexity of emulating a full IBM-PC like I saw) and with a RISC like architecture (simplicity of programing for the CPU, simplicity of programing VM core, and extra speed of VM). Because that I proposed the RC1600 specs.
Yep, I have a blog : http://zardoz.es
Emulator DCPU-16 VM
User avatar
Zardoz
 
Posts: 357
Joined: Mon Aug 12, 2013 8:54 pm
Location: Spain

Re: Scrapping the DCPU (a sensationalist headline!)

Postby wrongu » Fri Oct 04, 2013 10:15 pm

My two cents (also mentioned on IRC)..

Some players will be new to programming. Also, some will be experts with 20 years of C/ASM experience. That pretty much says it all, but...

I'm pro-assembly. If you've ever used assembly before, you understand the feeling of moving data around from register to register inside the machine.. With assembly, the lack of abstraction between the coder and the machine reflects the connection we want the player to have with his/her ship in general.

I'm not against abstracting. As Stinger brought up on IRC.. why not both? Allow experts to work with assembly. Make the learning curve easy by providing a more intuitive layer above it. I don't think this requires a full OS simulation, just a compiler.

Players may write their own compilers and languages. Good for them! But this does not mean that we can rely on this for beginners. If a new player signs on, they should be presented with the easy interface first, and be allowed to progress to assembly later. they should not have to go looking for a compiler built by other players (which may be buggy itself). A game that gets easier as it goes is designed backwards.
wrongu
 
Posts: 46
Joined: Sun Sep 08, 2013 6:15 pm

Re: Scrapping the DCPU (a sensationalist headline!)

Postby DarkSpartan » Fri Oct 04, 2013 10:36 pm

This was my problem with it, frankly. a fully emulated ASM-only CPU is interesting for the small number of people that are familiar with Machne Language. A prebuilt OS that can be modded is a better idea on a number of levels, not the least of which is familiarity of concepts.

Sure, we can build a wiki to teach ASM, but we'd be better off with a set of programs that you can access from a CLI/GUI and guarantee your ship at least basic function without having to program anything or rely on someone being polite enough to do what you paid them to do.

Of course, these are upgradeable to a point by more programs you could *buy* from NPCs. If you want anything fancy, you have a whole suite of different languages you can program in for, say, an MS-DOS clone, or a *nix clone, or even something completely custom if you want to go that route.

All you guys that love Slackware? Totally possible.

Debian? FreeBSD? Bring it on.

Want to write your programs in C++? Stand by for the fun. C? Compiler's over there. LUA? Not as hard as it looks.

Will there be speed advantages for doing it one way over another? Probably. As much as if you were operating a real computer.

Anyroad, if we plug in a basic OS that anyone can use as a mod, then it can be removed and another one put in it's place as long as it uses the same hooks in the scripting module. That said, I currently intend to mount whatever computer derivative that gets decided on as a mod, so that if you want to, you can operate the game without it.

The final machine implementation is pending the input of this thread, and once decided, will developed in a parallel process starting with the beginning of Milestone 3.
DarkSpartan
Lead Designer
 
Posts: 100
Joined: Mon Aug 12, 2013 10:45 pm

Re: Scrapping the DCPU (a sensationalist headline!)

Postby Krarl » Fri Oct 04, 2013 10:56 pm

DarkSpartan, I don't really understand what you mean. If you doesn't want to have an asm-level cpu, then how are c++ compilers going to work? What will they compile to?

I think that having machine language as the base for it would be really cool. A lot of games(kind of) have scriptable computers, but I don't know of any with a realistic cpu. I think that just having some kind of moddable scripting os won't be very fun.
But you're right that players need to have something simpler and basic programs already in place, we can't force people to code in machine language justntk be able to use their ship.
(I'm on my phone, so this post may look weird)
Krarl
 
Posts: 82
Joined: Tue Aug 13, 2013 5:39 pm
Location: Sweden

Re: Scrapping the DCPU (a sensationalist headline!)

Postby croxis » Fri Oct 04, 2013 11:08 pm

Random additional thoughts:

My impression has always been that the vanilla, stock game would come with sane, existing programs written in ASM so a player can participate in a lot of the game mechanics without touching a line of code.

What is the *point* of it?

I add a new gun -- what do i do as a player to connect it to the targeting computer? What do i do to the targeting computer? An engine goes out by damage. Someone tried to board my ship. I want to contact somebody. Right now the ship computer is a very abstract idea. I have no idea, being emulated cpu or something higher level, interacts with my gameplay or how I interact with it. All I know is computercraft and I see that system working very well here too (I'll run a server on my vps if people are interested in trying it for those who havent).

I'm very leery of having multiple OS types/programming languages/etc. Learning a new OS is hard. Learning programming is hard. Having both lua and python fragments the body of player knowledge and I think would do more harm than good.

Python modules that are dependent on speed, such as math calculations, can be written in C and then accessed as a normal python module. One thought is that the high level language can have modules written in asm (something like a magical lua cpu and a dcpu coprocessor maybe) allowing for a nice transition from the high level language to another.

The connection of the player with their ship is depth vs breadth. With ASM only a few people will have that level of relationship, with a higher level the code might be more abstract from the machine but more people can participate.
croxis
 
Posts: 277
Joined: Tue Aug 13, 2013 1:37 am

Re: Scrapping the DCPU (a sensationalist headline!)

Postby Krarl » Fri Oct 04, 2013 11:26 pm

I understand your point, but unfortunately a combined lua/asm processor won't really work, since the tempting part of machine language is compete control over the memory, which would be pretty complicated or weird, when either the lua or the asm have to share a memory, or have separate. The way I've imagined it is that there is a higher level language that you can compile to machine language. But, of course, then someone has to make that compiler.
Krarl
 
Posts: 82
Joined: Tue Aug 13, 2013 5:39 pm
Location: Sweden

Re: Scrapping the DCPU (a sensationalist headline!)

Postby Alderin » Sat Oct 05, 2013 12:08 am

The DCPU is more than half of what attracted me to 0x10C.

The idea of doing the low-level programming that I enjoyed as a teen, but didn't have the resources or experience to fully utilize at the time, (and no longer a viable activity IRL) now becoming a game mechanic, it's a dream come true (when/if it actually happens).

I'm an advocate for supporting MORE CPUs, not less, but I will admit I'm a weird guy, and those additional CPU options might be best left as Mods.

The low-level, open, unconstrained by anything other than the (virtual) hardware specs meshes with the sandbox game ideals and concept really well, and taps into more than just my imagination and rusty/dusty skillset that I'd like to exercise, the DCPU Community alone is pretty big, and I've had conversations with people who admitted they didn't care about playing the game, they just liked coding for the DCPU. It is rewarding in a way that only "bare-metal" programming is, and as close as many of us are likely to get to programming something that goes into space.

I do see the other side of the coin, though. LUA scripting for the computer's OS could provide much of the non-programmer end-user experience without the complexities of deciding on and supporting a DCPU OS and basic applications. It would definitely be less server-processor-intensive than the DCPU emulation. It could be limited much like the DCPU memory limits, but I think any limits would feel much more arbitrary than the limits the DCPU has.

I guess it boils down to: Emulate Computers, or Simulate Computers? I'm for Emulate.
Alderin
 
Posts: 67
Joined: Mon Aug 19, 2013 7:02 pm
Location: San Jose, CA

Re: Scrapping the DCPU (a sensationalist headline!)

Postby ComradeOj » Sat Oct 05, 2013 7:28 am

The fully functional emulated cpu was the thing that got me excited for the game in the first place. It's a really cool concept, and it was what set 0x10c apart from other space sims.

If arguing over the DCPU specs is a problem, why not just implement a real CPU instead of a fictional one? That way there is no arguing over specs. Even better is that there is already existing documentation on real CPUs, so you do not have to write any for a fictional one.

I think the motorola 68000 CPU would be great for trillek. It's easy to use, it is well documented, there are existing compilers and assemblers, and it was commonly used in many devices. There are more powerful versions of the motorola 68k, like the 68020, 68040, and 68060 that would be a great upgrade option in-game.
ComradeOj
 
Posts: 1
Joined: Fri Aug 16, 2013 9:17 am

Re: Scrapping the DCPU (a sensationalist headline!)

Postby Zardoz » Sat Oct 05, 2013 8:20 am

Like Alderin and Comrade0j, I come to 0x10c / Trillek because the fully functional emulated cpu concept, and the idea of building your own computer over it, adding devices.

ComradeOj wrote: I think the motorola 68000 CPU would be great for trillek. It's easy to use, it is well documented, there are existing compilers and assemblers, and it was commonly used in many devices. There are more powerful versions of the motorola 68k, like the 68020, 68040, and 68060 that would be a great upgrade option in-game.

Could, (IMO) but It will add some extra complexity (like with any real CPU). The problem with the real CPUS is that you must mimic it at 100% fidelity (cycle times, instructions, how interface with hardware, etc... )or you will begin to get angry people saying that He does "X" that works in the real world but not in the game. Using own fictitious CPU we avoid it and we can make it more simple.
Like I say before, I think that we should use something RISC like, because his short simple instruction set is more easy to understand and to program, aka is more "mainstream" level.
Yep, I have a blog : http://zardoz.es
Emulator DCPU-16 VM
User avatar
Zardoz
 
Posts: 357
Joined: Mon Aug 12, 2013 8:54 pm
Location: Spain

Next

Return to Discussions

Who is online

Users browsing this forum: No registered users and 1 guest

cron