About Matthew Walker

Matthew Walker
Matthew Walker

My name is Matthew Walker, and I’m the creator and maintainer of Engines of Delight.

I’m a veteran software engineer and game developer, and I’ve done server-side development on large-scale MMO projects for several years. I’ve written server code for game systems, networking, movement and physics, persistence, back-end support services, and various tools that support all that.

I’ve experienced the wide-eyed excitement of pre-production prototyping and exploration and the thrill – and agony – of supporting a live game, and I love it all. I’ve had the privilege of contributing to a handful of MMO titles, some of which have even shipped:

  • Ultima Online 2 (Engineer, cancelled – EA/Origin)
  • Ultima Online (Live QA Director, shipped – EA/Origin)
  • Tabula Rasa (Engineer and Lead Programmer, shipped – NcSoft)
  • Rift: Planes of Telara (Engineer, shipped – Trion Worlds)
  • Rift: Storm Legion (expansion) (Engineer, shipped – Trion Worlds)
  • War Commander: Rogue Assault (Engineer, in development – KIXEYE)

I’ve done and seen a lot in this space, but in no way do I consider myself an expert. I’m still learning as I go, and things keep changing all around me. It’s both exciting and hard to keep up with.

I started Engines of Delight as a way to both contribute to the game development community and learn from it, and encourage others to do the same.

6 thoughts on “About Matthew Walker

  1. Love to see this.
    I’m writing a server in c++ for TERA mmorpg.
    It would be awesome if you could explain the basics of a efficient Effect Engine or so.
    Thank you!

    1. Hi, thanks for your question! Oh my I just realized it’s been way too long since you asked, sorry! 🙁

      What do you mean by “effect engine”? There are so many overloaded terms in our domain that we need to be specific.

      Thanks!

  2. Hi Matthew Walker , Thank you for your great blog and comprehensive explanation on topics. my question is a little different, something that maybe should have been asked in “Quora”. I’m a C# developer and would like to become a game back-end developer. I’m a little mixed up with recommendations(there are lots of technologies) and tried to find a road-map. something clear with steps for two three or even four years studying ( but I couldn’t find). is there any road map for learning in 2018? What’s your idea? If a newbie goal is to build a game server what are steps? It would be great if you even recommend some books

    1. Thanks for your question. Yes, I know, you wrote me months ago and I’m only just now replying. Sorry about that. I suck, obviously. 🙂

      To be honest, I procrastinated on this reply partly because it’s hard to answer. These days there are many resources available for learning general game development concepts. I’ve never seen anything described as a “road map” for game server or back-end game development. A general lack of information is one of the reasons I started this blog (and yes, we already know that I suck for not keeping it updated :P).

      Multiplayer game development involves many disciplines and/or skill sets. You can slice and dice them many ways. Here’s one way:

      • Graphics (representing the game “world” in 2D or 3D)
      • Audio (music, speech, sound effects)
      • User Interface (input control, camera control, text display and input, buttons, widgets, and the like)
      • Physics (objects colliding and moving in a simulated world)
      • AI (NPCs, computer opponents)
      • Gameplay (rules, game mechanics, interactive objects, missions, systems, and more)
      • Networking (processes communicating with each other, e.g. client-server and server-server)
      • Concurrent Programming (performing multiple operations in parallel)
      • Databases (storage and retrieval of game state and/or game content)
      • Distributed Computing (multiple processes working together)
      • Content Tools and Asset Pipeline (transforming art, audio, and game design content into a form used by the game)

      I didn’t mention “Client” or “Server” above, because most of these appear in some form in both client and server. There is also a lot of overlap between them. Generally speaking, everything except for graphics, audio, and UI play a part in back-end development. There’s a lot to choose from there.

      At a minimum, to do back-end game development on any “real” project, you should probably learn something about:

      • Networking
      • Concurrent Programming
      • Databases
      • Distributed Computing

      Note that those topics have nothing to do with game development per se, and apply to many computing disciplines. That means you have even more options for learning and getting good with them. The good news is that, with solid skills in these areas, you can be valuable to a game project even with minimal game dev experience. That’s how I got started in game dev after a few years of working in “traditional” development.

      In addition, you should get experience with writing game play code for the types of games you like to play or want to work on. As I said earlier, there are already great resources for this stuff all over the web. It’s probably best to try writing some simple games yourself, or join an open source or mod project if you can.
      Be warned that writing multiplayer code will make any game project take 10 times longer than a comparable single-player project.

      I would start with something simple to get a basic understanding of game play programming first (e.g. finite state machines, game object interactions, event handling, and the like). Then, add in things like AI, physics, and other challenging stuff. Finally, apply those concepts in a new multiplayer game project. NOTE: I also don’t recommend taking a single-player game and making it multiplayer. That way lies dragons.

      So, in summary:

      Get good at general back-end development that can be used anywhere.
      Get good at general game play concepts.
      Then combine the two in a mix you feel comfortable with.

      I’m sorry I don’t have anything more specific, but I hope this helps a little.

      Cheers, and feel free to ask more questions… if you have the patience. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

WordPress Anti-Spam by WP-SpamShield

This site uses Akismet to reduce spam. Learn how your comment data is processed.