Hello again. It’s been on the order of three months since my last post, somewhat longer than I’d hoped, but here’s a new one.
Since my last post, I’ve worked on a few small(ish) things here and there, not really finishing much, but learning quite a bit regardless. I had quite a large problem where I had largely conflicting ideas about what I should be working on, especially considering that I started looking for work.
On the one hand I wanted to work on low level algorithm stuff so I could have at least one sample of good quality c++ code to show off, that I could give to people and have it build and work.
On the other hand I wanted to make things that looked pretty or were fun.
I felt that learning how to make things look unique or like a game was important given the kinds of games I’d like to make and the kinds of people I’d like to work with. Sure, getting good at code is important but I want to get noticed, do things like train jam, and sit with the cool kids at GDC, and developing my sense of style and my ability to make stuff seems to me like the best way to go.
This conflict kind of paralysed me in terms of making progress. One day I’d be into writing some parsing code, the next day I’d be into writing shaders and making things look nice, the next day I’d spend writing coverletters and emails to potential employers (none of whom would respond), then the day after I’d become discouraged and lose motivation having not made much progress on any front.
I tried on a couple of occasions to break this cycle. Both times the basic idea was to try and get a team involved so I’d have an external reason to stay motivated with one particular project. I like to think I can work pretty well on my own but it’s now something like two or three months out of university and I kind of miss the whole collaboration thing, y’know, the whole “talking to people and working towards a common goal” thing.
My first attempt was a (in hindsight, way overscoped) multiplayer team vs team game that kind of combined elements from Space Engineers, and Garrysmod. The idea was to create a game that I could whip out at a LAN party, but that had a fairly large technical aspect to it. I was going to have a system like wiremod where you could wire components together to create complex spaceships and bases. I had a pretty solid idea of what I wanted and what needed to be done, so I made a start on my own and got pretty far. This was also an opportunity for me to play with a bunch of different libraries I’d been meaning to try, like Raknet and stb_voxelrender.
I got to the point where you could have multiple people join a server and place blocks and decided to try to get more people involved. I explained my idea and showed what I had to a bunch of mates, some of whom expressed interest. “Great,” I said. I keep going for a while in hopes that at some point someone will join in but nothing happens. So eventually I hit a brick wall and lose motivation. I did some work on a compiler for a language I thought could be used in the game, and got pretty far, but by this point it didn’t look like it was going to happen so I stopped in favour of something (much) smaller. I may return to the idea in future but I need to do other stuff first
I tried a few things in Unity (which has a semi-solid linux client now, holy crap), made some models and wrote some shaders. This kept me going for a bit, and I learnt quite a lot, but it’s three months and I really want to work with people now. A job would probably help here but as I said earlier, I’d been getting zero replies from the companies/people I’d been applying to/trying to get into contact with, so I had to try something else in the meantime.
— Patrick Monaghan (@_manpat) March 24, 2016
Fast forward to a week or two ago. I remembered that I made a game at uni that was pretty cool and that people seemed to like, plus I made it with people. I also remembered that we said that we were going to return to it at some point. Well shit, let’s do that then.
We discussed it for a bit and decided that yes, we should totally do that. However, because the original game suffered a bit from rushing to meet deadlines, comprimises, straight up poor managment and over engineering, we decided that it would probably be best to build it from scratch.
When we began development we had planned to do most of work ourselves, at least in terms of tools and graphics. Looking back that most likely wouldn’t have worked well for us. When we pitched our plans, we were fairly quickly convinced to settle on using existing software. We picked OGRE as it seemed to be the largest, most well developed, cross platform framework available to us. Plus we knew that Ogitor existed so it seemed like a sweet deal. We did not know however, that it was going to have little to no documentation passed the simple stuff, or that Ogitor was going to be garbage that didn’t work. We ended up replacing Ogitor with blender (the best decision made during the project) and just banging our heads against a wall until we figured out how the deepest, darkest features of Ogre worked or fit together. Plus getting everything to build and work reliably across the teams machines took WAY TOO LONG. Let me stress how bad the code is. Getting portals to render the way we wanted required doing dozens of (small) string operations per frame because of how RenderQueueInvocationSequences work. We obviously knew this was bad at the time but we there was no other way that we could see at the time to make it work without them. Just figuring out RenderQueueInvocationSequences took long enough.
Shout out to Ogre folk, I’m not the best at documentation but goddamn, Ogre is too large to not have solid documentation. It’s pretty hard to get a foothold if your new to using it.
Now that we have written the terrible code version, have learned from it, and no longer have deadlines, we’re removing the cruft and writing the (hopefully) good version. It’s only been a week or so but we have a barebones scene exporter for blender, scene loading and rendering, plus portal rendering that is already way more advanced than the original version but in far less code and written in a straight forward way. If we continue at the rate we’re going we’re going to reach feature parity in no time at all.
Needless to say, I’m pretty excited to be working on Voi, and I’m hoping my excitement carries through. I’d like to try and promote it from it’s current status of “kinda cool thing” to actual game.
Anyway, </long post>
This is me signing off for hopefully less than three months.
PS: Here’s cool looking bug I had while writing the new portal rendering algorithm. I thought I was clearing the stencil buffer more than I actually was.