How low-level should you go?
game programming high-level development low-level development
Today I was going to talk about my start on the game editor's UI but something else got my attention. I have long been following some blogs and reviewers on XBox Indie Games, and now that the cat's out of the bag on XNA's fate, it's like a large band broke up- that band being the XNA developers community, and they parted ways on how they will continue to make games in the future.
Many stick to what they know and keep on keeping on with XNA, or are moving to the cross-platform MonoGame. A couple others want to focus more on getting things done quicker and go with something high level. One of the prominent XBLIG developers (creator of the million-selling FortressCraft, among 10 other games) spoke about his future with games and his abandonment of XNA for Unity, though he expressed it much more bluntly. Given his short experience with Unity, I felt he jumped the gun too quickly on what's the best way to go for indie development. No, I don't think it's a bad way to make games, and I am trying it out and hope there's enough scripting for the avid programmers to do. But this feels more of a "first impressions" view on Unity, and made it sound like it's the only right way to go for indies. That's on top of a jaded feeling that Microsoft pulled a fast one on him. I'm worse off, though, I haven't released one XBLIG game and sadly I don't even have an Xbox at this point.
He stated that he put a lot of initial work and received a lot of experience with coding in XNA as his games grew more complex. But much is clear about the overall message- some people just want to make some goddamn games. His few last statements were of particular interest to me:
If you want to spend a huge amount of your available dev time re-inventing the wheel, go with XNA. Go with MonoGame. Enjoy scratching your head about calculating tangents for reflections, wondering how cascading shadows work, and if you should implement A* or Dijkstra’s for route-finding. Me, I’ll be busy getting on with writing the game.
The tone of this paragraph seems to say "While I'm making a game, I'm also leaving those engine programmers in the dust". Oh wait, this kinda does sound familiar.
Every developer has their own interest and affinity towards a topic. Just going from his write-up, he seems to be more interested just about the things that define a game. Its rules of play, its design, etc. I have an affinity (or at least I want to improve) towards graphics programming. Which is why I don't mind scratching my head over shaders and shadows. As a counter-example, I do not really fancy AI or physics programming. I plan to use BEPU Physics or Bullet XNA (especially since I'm already familiar with them) to make things move and bounce all over the place. And for AI I will just follow code tutorials with just enough custom work to make it feel decent.
That preceding article could probably be a debate starter about high-level versus low-level style of game development. I'll give him something though- I realized that I could put most game programming blogs into two main categories- blogs that talk about their games mainly to non-programmers, and blogs that contain very down-to-the-metal, get your hands dirty with code and math articles. Those "Luminance-based edge detection techinques" articles tend to not live in the same home as "New level packs today!!" articles. Personally, I would like to get a following that consists of a healthy mix of both game programmers and all those gamers that don't know anything about programming, and I will need to work more on the latter. There's still a glimmer of hope of getting something on XBLIG, just to follow through my goals.
Barring that, is there any amount of re-inventing the wheel that should be tolerated? How much time can be spent on low-level algorithms until it becomes a hindrance to your productivity and bore your readers that eagerly wait to play your game?