How current is the whole HMH series today?

Hello, I have found HMH today and I am so thrilled. But I am not sure at all, how current is the 2014 videos today. Can I still follow the first videos as they are today?

If not.. are there any updates about what has changed, how to accommodate?

And also, I am not sure about this. I am running on Linux. Is the HMH only for Windows users? Or am I able to follow on Linux too?

And is there any Linux IDE where I can see the assembly output and check registers?

Thanks a lot.


Edited by neon on

HMH is more about how to approach/think about programming than teaching you a specific topic but it will still teach you a lot of things.

The videos are still valid today, but you should consider them as a way to do things, not THE way to do things. Some things Casey wouldn't do the same way today (because he has more knowledge now, and the industry evolved), but they are still valid (and working) and will help you learn how things work.

For the changes, you can use a more recent compiler (e.g. vs20019, Clang or GCC), don't try to use emacs, use any editor you like (Casey switched to 4coder, and uses his own editor outside of HMH).

HMH is on Windows only at the moment. But that's only a small part of the code (the platform layer) and peoples have made ports to linux and other OS. The platform layer is creating a window, processing inputs, initializing sound, providing file access and a bit later creating an OpenGL context. The game layer should be the same on Windows and linux.

I don't know about IDE on linux, but I suppose there is QtCreator (never used it myself). To debug (the following are not IDEs) you can use GDB (there are several GUI tool for it), or one of the project on this site is CodeClap although it's not free and still in the alpha stage.

In addition to what mrmixer said, this

If not.. are there any updates about what has changed, how to accommodate?

can be answered directly: almost nothing has changed.

When HMH started, just about everyone had moved onto multicore x64 architectures, the previous generation of consoles were pretty new, and bindless OpenGL was becoming a thing. These all together set a nice baseline that still holds today: you can use CPU features common to all x64 machines, you need to use SIMD and multithreading to get the most out of the hardware, and you no longer have to use the (now a bit dated, but fine for a game like HMH) binding oriented graphics APIs.

The newer consoles and machines of today are mostly just more powerful, and the hw raytracing and upscaling are pretty out of scope for HMH. If you compare that to the 360 and PS3, those were both pretty weird compared to each other and to desktop machines. Basically any discussion of programming those directly is now hopelessly out of date, and HMH doesn't have any.

Bindless graphics doesn't mean much if you are new to graphics APIs but they're one of the things that differentiate D3D12 and Vulkan from D3D11 and OpenGL. You can do it in those older APIs, but it's kind of backported and they weren't designed with it in mind. HMH was where I first learned about bindless graphics, and it's still the thing you are sure to see mentioned when a rendering engineer tweets about their new engine. So while you might not choose OpenGL today, Casey is still able to give a good discussion of what you'd do differently now, even back then.

Casey chose a good time to start!!


Edited by graeme on

Hello,

I have perhaps a silly question as I just started watching the series. It is quite a lot to digest at first, but I've noticed that he mentions a lot of things specific to intel and windows.

Is his code also good for AMD and other processors like in XBOX and PS4/5?

I mean, could the current game already be compatible to ship to all those platforms even with minor changes? Or would it need to have very specific platform API code for each still to be covered in the series?

Thanks.


Replying to mrmixer (#25035)

HandmadeHero code is written in way that the CPU almost does not matter. AMD for sure does not matter, because x86 code on it works the same for as for Intel. For some other architectures there may be differences in SIMD code, but that's only minor part of HandmadeHero code.

Modern Xbox and PS4/5 consoles are all x86 based, so exactly same low-level code optimizations as for desktop applies to them. They have different GPU API's, but discussion & showing those publicly is not allowed by NDA.

The way HandmadeHero code is written, the code that interfaces with system for opening window and getting keyboard/gamepad input and doing rendering is very isolated. Rest of code is written to work for any platform. So you would have very little work to do to ship on some other platform than PC - just that platform part would need porting, rest of code should compile as is (aside minor compiler differences).


Replying to da447m (#25732)

Gotcha mmozeiko, thanks!

One last question since we are here? You said

but discussion & showing those publicly is not allowed by NDA.

How exactly would one knows how to [port the] code then? One needs to ask them and they send some dll and API documentation and ask you to sign a NDA? Didn't get this part very clearly.

cheers


Replying to mmozeiko (#25737)

Yes, you go to Sony or Microsoft or Nintendo developer site, register, sign whatever they ask you to sign, buy devkit (special console that allows to deploy code) - they ship it to you and give you access to documentation & tools to compile/deploy/debug on these devkits.

https://developer.nintendo.com/
https://partners.playstation.net/
https://www.xbox.com/en-US/developers/


Edited by Mārtiņš Možeiko on
Replying to da447m (#25738)

OH then it is really in that way :). Ok thanks for this info and links!


Replying to mmozeiko (#25743)