Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

From this question, I have another question about...
How long and what type of complexity would have been involved in Chris Sawyer writing most of rollercoaster tycoon in assembler?

In order to specify and break this question down, I am interested in;

  1. Approximately how many man hours (have a guess) do you estimate it would have taken Chris to write the game by himself? Or alternatively give an approximate percentage of the ratio of assembler coding hours to say, writing the whole thing in C/C++.

  2. Do the programmers that know assembler well think of this as an overly complex task for such a low level language abstraction? Apart from performance benefits is this just a freakish natural ability that Chris has, or a skillset worthy of learning to that extent? I'm interested if people think the complexity/performance thing is worth learning assembler that well (in order to write), or is it only "worth it" if you have a lot of naturally developed skills in assembler (presumably from working with hardware/hardware drivers/electronics/etc).

share|improve this question
1  
Could he have started by writing it in C, and then change parts of it to assembler as needed for performance? –  Jon Nov 18 '10 at 22:31
1  
Ha, ha, ha, this is like a question from someone who's been reading my old comments. –  Mark C Nov 19 '10 at 1:00

3 Answers 3

up vote 8 down vote accepted

From reading his rough bio, it looks like two years (early 1997 to late 1998). Given that he seems to be a 'one project at a time' person and the tool set and timeframe isn't great for 'team development', I would assume a straight 24 programmer-months.

At that point he had been a professional games programmer working in assembly since 1983, so I wouldn't equate "two Chris years" to "two me years" of work.

Given that most professional games take around 25-person years for a team to develop, two-person years for an industry leading game is an amazing accomplishment, lending creedence to the sayings:

So in this case how much faster would Rollercoaster Tycoon be written had Chris used C or Java or Javascript or ...? Probably it wouldn't have mattered other than the fact that he may have been a bit slower using a higher level language that he didn't have 14 years experience with...

share|improve this answer
    
great points, I sort of thought that might be the case. –  Anonymous Type Nov 19 '10 at 0:51

If you think of C as little more than a "high-level" assembler, and we make the assumption that Chris was not make mad optimizations to his assembly code in every routine, then I would imagine in terms of % time longer, then it might not be that much more for a skilled assembly programmer.

Assembly gets complicated when you're doing all those mad optimizations (vectorising operations, making use of special instruction sets (SSE, etc) bit twiddling, etc) that you simply can't do from C. If you're doing that stuff, then the time is actually in the "fiddle this bit, assemble, measure... fiddle this bit, assemble, measure..." loop and not in the actual coding. With a good macro assembler and a skilled programmer, then writing assembly is not a huge step down from writing C code.

Still, I wouldn't have been able to do it! I shudder to think about trying to initialize DirectX directly in assembly! (Edit: Wikipedia tells me that he wrote some parts in C to "interface with the Windows operating system" so I guess he wasn't initializing DirectX in assembly then... phew!)

share|improve this answer
    
YEah that was the bit I couldn't figure out initially. But then I read the bit about using C for DirectX. Thanks for the info on optimisations that is very interesting. –  Anonymous Type Nov 19 '10 at 0:54

Another person known for writing a lot of Windows programs in assembler is Steve Gibson, author of SpinRite, ShieldsUp! and other utilities. He discusses his love of assembly language here.

Randy Hyde (whom I used to know way back when we were both writing 6502 assembly code for the Apple II) has a new online book called Windows Programming in Assembly Language. He is a big proponent of using fancy macros (including looping constructs) to make assembly programming more like using a high-level language. Sawyer probably used a similar approach to be more productive.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.