Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The original Doom must have been heavily profiled by id though, surely? Obviously there is a bunch of things that were missed, but I was in game dev at Doom time and profiling was half the job back then.


Well yes - it was an incredible feat of performance engineering. It's just that since then someone managed to make an extra three thousand commits worth of micro optimizations.


True. And Carmack and team only had so many hours in the day.


And it us easier in a non moving target.


Until razer comes in and lands a patch authored by an intern that tanks framerates to 1/3rd doing glowy USB shit every frame...

https://www.reddit.com/r/Doom/comments/8a1m9s/psa_deactivate...


What tools did you have in 1993? From what I understood, id Software used NeXT because the tooling was not up to the task.


Yikes. Now you're pushing my memory. I believe there was a profiler built into Visual Studio and we had some external tool, too. We had some sort of system set up with serial cable to debug and profile. The EXE would download onto our test PC next to us.

Problem for id is that you have no sane way of profiling the DOS port on NeXT.


Visual Studio? The first released Visual Studio (Boston) was released in 1997. Doom was developed during 1993 :P !


He may well be thinking of Microsoft Visual C++, which dates back to 1993 and evolved into Visual Studio. It had a profiler.

https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B


This. Thank you. I thought it was Visual Studio. It's been a while...! The games were a wretched mixture of C++, C and x86.


I use VC++ in 96. Just trying to learn a bit of C++!


Doom was developed on NeXT machines, not Windows.


Although the DOS version was compiled using Watcom C, so presumably they'd use Watcom's debugger for testing the DOS version.


There is no evidence of any profiling in source code. It wasnt a thing you did in 1993. The best you could do was compile whole game with new changes, run benchmark loop and compare results.


The gprof profiler was used long before 1993. It dates back to 1982.

I did game engine dev professionally in 1994 (and non-professionally before that). We profiled both time and memory use, using GCC and gprof for function-level profiling, recording memory allocation statistics by type and pool (and measuring allocation time), microbenchmarking the time spent sending commands to blitters and coprocessors, visually measuring the time in different phases of the frame rendering loop to 10-100 microsecond granularity by toggling border or palette registers, measuring time spent sorting display lists, time in collision detection, etc.

You might regard most of those as not what you mean by profiling, but the GCC/gprof stuff certainly counts, as it provides a detailed profile after a run, showing hot functions and call stacks to investigate.

It's true that most of the time, we just changed the code, ran the game again and just looked at the frame rate or even just how fluid it felt, though :-)


But was that in Watcom? I don't think gcc was on DOS until DJGPP v1 which was...1992? I don't remember if gprof was ported. iD did use DJGPP for Quake in 1996.

I'm guessing they used gcc on NeXT but profiling that platform probably didn't make much sense, different compiler, different CPU, different OS...

The game was written on a TurboColor which had a Motorola 68030 (?) that ran at 33MHz and supposedly only ran at 15FPS (probably as slow as a 386DX/33 at the time)


Watcom also had a profiler back then.


Yes, I remember using it in the early 90s.


I was a game engine dev at the same time. We definitely profiled heavily. Microsoft had a profiler of some sort, and I believe we had a third party one too.


I was profiling my code in the early nineties. Sure, I created primitive profiling tools on my own, but regardless.

While 486 AGI stalls were trivial, especially Pentium changed the game with its U and V pipes. You could no longer trivially eyeball what code is faster. Profiling was a must.

Heck, I even "profiled" my C64 routines in the eighties by changing the border color. You could clearly visually see how long your code takes to execute.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: