Handmade Hero: C game from scratch
handmadehero.org
handmadehero.org
For the more experienced game devs out there, the series is a fantastic read: http://mollyrocket.com/casey/ (starting post 6). Many of the insights apply to software engineering in general, not just game dev.
My only issue is that, although in C, the preview/introduction video seems pretty centered around visual studio[0]. In the FAQ you say that multi platform support for *nix systems will be added later.
How exactly will this work for those of us who want to follow along, but don't have Windows?
If you want to follow along from day one I suggest you install Windows in a virtual machine (you can download a legal copy of Windows and use it for about a month, just make sure you regularly save the code on your main OS). Alternatively, you can wait until the author will present how to do the same thing (window creation etc ...) on a Unix like OS.
P.S. EMACS!!!
I'm not sure if this applies to Windows 8 or 8.1, however.
https://www.youtube.com/playlist?list=PL006xsVEsbKjSKBmLu1cl...
http://www.reddit.com/r/reconstructcavestory/
Cheers
However, VS 2015 will have clang integration.
I'll definitely be watching it, although I take some mild offense at the idea that I am somehow less of a gamer or game-maker if I decide to use an engine. Truthfully, I am not a very good programmer: I don't delight in getting into the guts of the mathematical algorithms that allow for the complicated physics calculations, AI pathfinding, or multiplayer networking, nor do I enjoy the tedium of hand-optimizing routines for tweaking performance. I just want to make games.
On the other hand, someone like John Carmack clearly does delight in some of these things, and he is ten times the programmer I will ever be. To boot, he has written this amazing Doom engine (to use an antiquated example) which he will license out to other developers! Why shouldn't I use it? What am I demonstrating by insisting that I do everything myself if it results in an inferior game?
Most of the time you don't need to reinvent the wheel because someone has probably spent a PhD implementing it better than you ever will. I think this is a perfectly valid excuse and I use it every day. If I didn't, I'd get no work done. With the libraries available few people should ever need to implement an FFT, for example. However, it's good practice to try coding some algorithms yourself to see how they work.
In terms of games, I assume the intent wasn't to belittle, but to try and show people what happens under the hood. It helps you make better decisions about which engine to use and what features to use within the engine. If you're given pathfinding options within your engine, to take a silly example, do you know enough about the algorithm to know which one would be best for your game instead of blindly choosing A*?
Understanding how the underlying code (probably) works allows you to make better decisions about which engines to use, which features you want and which you could brew yourself if you needed to.
The chance for portability depends on the graphics engine you choose or write. Our project (Sococo) is portable across Windows, Mac, iOS, Android and several versions of Linux. The Windows/graphic part is a tiny part of the code.
Will the game support multiple platforms? Yes! Windows will be the first platform, since it is currently the most common gaming platform, but the series will later cover (at least) Mac, Linux, and Raspberry Pi. Portability will be a major topic in the series, so all the code will be structured to demonstrate how to write code that is easy to port to new platforms.
I hope this will turn out to be a great resource for experienced programmers interested in graphics, real-time processing, and the like. I wish I had the time to go through it.
However if your goal is to make games my advice, and I'm not alone, is to make games and use an engine. Your users will not know if you developed it from scratch in C. They won't even care if you tell them. Only programmers and game developers care.
I like this kind of stuff.
However there are projects where I'm more interested in game play mechanics, art, music, and experience. I can still write my own shaders. I still write all of my own behaviors, AI, and controllers. But with an engine I don't have to worry about animation blending, input control, hardware platform differences, asset tooling, etc, etc, etc, etc.
I don't want to discourage anyone who is curious. I just wanted to push back against some of the nostalgia in the video. It's not all glamorous. I've spent my share of my youth slavering over cryptic compiler errors. Developing games then wasn't as much fun as it is today, IMO. It was different and unique in its own way. But the tools we have today are far, far better.
I can see lots of reasons to develop a game engine from scratch, but they become less compelling every year.
Interesting, that though he mostly spoke about refactoring procedural C, it really reminded me how I would work when programming in Clojure.
Would not that save lots of time and ensure it works cross-platform from the start? To me, it just seems that you re-invent the wheel by not doing this.
I can't wait to start watching the videos and of course, code along.
Always happy to see component-entity systems or other modern game architecture patterns applied!
I don't think those feeds will teach how those things work.
Is he using an existing processor / memory / motherboard? Is he using an operating system? Is he using a compiler, editor, IDE? Is he using a standard library? Is he using any 3rd party libraries?
Just because he isn't using an engine doesn't mean it's made "from scratch".
[1] http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/