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.