There is a trend these days to avoid writing about technical things in programming — and in particular game development — blogs. Just go to places like r/programming or altdevblogaday, and so on and you find plenty of articles giving you great advice on everything EXCEPT math and programming! What gives?
There’s just not enough articles any more that get down to the nuts and bolts of algorithms and data structures, or at an even more basic level actually bother to try explaining some interesting theoretical concept. Once venerable clearing houses like flipcode or gamedev.net have either shutdown or become diluted into shallow social-networking-zombies. Perhaps this is a symptom of our ever decreasing attention spans, or even more pessimistically a sign that indie devs have simply given up on trying to push the technological envelope out of fear of competing with big studios. It seems that trying to innovate technically is now viewed as `engine-development’ and derided as unproductive low-level tinkering. Wherever it comes from, I am convinced that these insubstantial discussions are making us all stupider, and that the we need to start writing and paying attention to hard technical articles.
So, rather than sit back and complain, I’ve decided to do something proactive and try to update this blog more often with useful — or at least interesting and substantial — technical content. But before that, I will start by listing some of the things I am *not* going to talk about:
- Industry news
- Business advice
- Coding “best practices”
- Social networking
- Marketing
- Project management
As I’ve just described, there’s already an abundance of literature on these subjects, possibly because they are trivial to write about, and it is easy to have an opinion about them. As a result, I don’t really feel particularly compelled, or even much qualified as an industry-outsider-academic-type, to discuss any of those things. More pragmatically, I also find that discussing these sorts of “soft”, subjective issues leads to either pointless back patting or unproductive bickering.
Instead, I’m going to use this blog to talk about the “harder” foundational stuff. When possible, I will try to provide real code here — though I will probably switch languages a lot — but my real focus is going to be on explaining “why” things work the way they do. As a result, there will be math, and this is unavoidable. I’m also going to make an effort to provide relevant references and links when possible, or at least to the extent of my knowledge of the prior art. However, if I do miss a citation, please feel free to chime in and add something.
I don’t have a set schedule for topics that I want to cover, but I do have some general ideas. Here is a short and incomplete, list of things that I would like to talk about:
- Procedural generation and implicit functions
- Physical modeling using Lagrangians
- Mesh data structures
- Spatial indexing
- Non-linear deformable objects
- Collision detection and Minkowski operations
- Fourier transforms, spherical harmonics and representation theory
- Applications of group theory in computer graphics
- Audio processing
I’m also open to requests at this stage. If there is a topic that more people are interested in, I can spend more time focusing on that, so please leave a request in the comments.
I really agree with this post, and it’s incredibly apparent when visiting r/gamedev. Personally, I think r/gamedev might be better renamed r/iphonecasualgamereleaseposts or r/Unityhobbyists given the prevalence of posts that are spam about casual game releases, or posts fellating Unity (even some where the person asks a question about which of two frameworks to use, and mentions they have experience with both, only to have the top comment be incredibly useless Unity fanboy spam saying “USE UNITY LOLOLOL”).
It also seems like any posts about game development itself, that is to say the, the process of making games get massive amounts of downvotes or are shouted down because the posts don’t have 100% finished polished gameplay footage. I’ve found this is especially true of “core” games made by indies. Anything that’s not a Bejewelled or Minecraft clone will be downvoted into oblivion.
I would really like to see a lot more game programming discussion. That being said, the quality of the game philosophy and design discussions is typically also quite low. In general, there are a lot of IS THIS IDEA ANY GOOD and RATE MY GAMEPLAY MECHANIC. I’d love to see some deconstruction and discussion of established mechanics more than herp derp gimmick crap that’s impossible to talk about objectively.
I haven’t even read this article yet, but I want to voice my support immediately!
Yes!
If I can help at all you probably have my email now.
yup – I totally agree with my past self.
Thank you for being the little Gaulish village holding off against the onslaught of “industry news” and “how to be the next zynga” articles!
Yes! Thank you 🙂
I think the traditional blog format isn’t ideal for this type of content. Blogs are time ordered and tend to emphasize new over old. When you’re reading industry news, this is what you want. However good technical content is still good 5 or 10 years from now. How do you find it on a blog? Typical blog software will give you “Archives” (grouped by time) or “Categories”, but neither is easily browsable like http://archive.gamedev.net/archive/reference/ or http://flipcode.com/archives/articles.shtml . And even flipcode isn’t great for browsing; it’s not organized by topic. So it might be helpful, a year from now, to go back and organize the posts you’ve made into a static page of some sort (maybe your About page).
I agree wholeheartedly. In fact, I’ve taken the same sorts of steps you have with my own domain knowledge in mathematics and programming. You should check out my blog at http://jeremykun.wordpress.com/ (for instance, I also have a series in progress on Fourier analysis with an aim to do image and sound processing).
I’m also starting to get interested in graphics and procedural content generation, although my own experience is closer to abstract algebra, theoretical computer science, and machine learning. So I’d *really* like to see what you have in mind for the applications of group theory to graphics.
Keep up the great work, and I’ll definitely be back to read through your posts so far. Perhaps you could organize it, though?