As of Friday, momentum may have been restored. We showed our game at the EAE Open House with our first finished level, with finished art. We removed the three old levels as the main impact was from the completed level, and we wanted more feedback on the new theme.
This level was a hit. Having art in the game made it feel complete for the first time since the end of summer. The lighting, transmission point art and particles and working turrets showed us what a semester of toil had wrought. There is still a long way to go, but the positive feedback was a shot of life we sorely needed. There were still some features and functionality missing, but we can fix those next semester. For now, we can head into the holiday break satisfied that we’re once again moving ahead.
After the IGF submission we voted on team leads. I was voted lead engineer, and the design lead changed.
As lead engineer, my task list didn’t change much. Merge code, get art in the game, and, as the single new addition, manage the other engineers by keeping their task list full.
The design lead change was a big deal. Keeping all the mechanics as they were, we got a theme to go with the game: you’re a sci-fy spy fly liberating secrets from megacorporations. While the theme is a little strange, it explains why the character has a full 360 degree field of view and it got the designer excited. With this new direction came new art, and new levels. For my team it was business as usual. We were still collecting things, and still avoiding turrets or wandering actors.
With the new direction we got a new level that was submitted to IGF as the third level. I redesigned the other two to use the new idea of sending 3 transmissions, rather than collecting wandering items.
The day after we submitted to IGF one of my producers notified me the entire game would crash. No explanations, it wouldn’t crash in the development environment, but would lock up and shut down when played. The next 48 hours were spent diagnosing this issue. Removing anything that changed since the last successful build and slowly reintegrating pieces of the project until it broke. The error showed up in Enlighten, the lighting system Unity uses. Since this was not our code, we could not fix it through code. More hours of debugging later, I found the error was in the newest level we built. I don’t know why, but the geometry in that level caused a null reference exception in Enlighten when it was unloaded. I tried everything short of redoing the geometry to fix the problem, but nothing worked. In the end I removed that level completely and gave them an update to send to IGF with only two levels.
Having to redesign an entire semester’s worth of work a week before a submission is a nearly impossible task. We began by prototyping a few mechanics – collecting things, dodging things, a simple bullet hell type game. We met the next day to see who had the best fit. With little time to go, we decided on a collecting game with bullet hell features. A little strange, but anything was better than nothing at this point. So we whiteboxed some textures and assets, built them into the game, and pushed them out as an igf build. Overall our first submission was not horrible – 3 levels, with a mechanic that was OK: get from A to B without dying, collect the green objects. We submitted this to IGF with the intention to use statistics to give us more time to flesh out a better game.
A week before IGF we hit rock bottom. A major flaw was pointed out to the team in a way they finally noticed. The camera we are using creates two focal points when you rotate up and down, as the horizon is fixed at both points. These points don’t move and draw the eye. We had known about this since the beginning and tried to design around it as best we could. Through our own playing we found these two points become a nice navigation and orientation tool – you always know where the horizon is. But after the flaw was pointed out, the team immediately panicked and we began to redesign the entire game a week before IGF submission…
From the summer to the full team, we introduced problems. Having a small team of 4 working over the summer to the full team of 11 we lost a lot of precise communication. As such we never knew when art was ready or completed, when a new level was ready, or what the status of any particular bug fix or system was. As such we would keep close eyes on our Slack board to see what was going on. Unfortunately for me, as the git master, the only time I would merge branches was when I saw notifications that Git had pushes. This caused tension as the artists would not use Git for their assets, so nothing they had would be in the game. To rectify, we showed them how to use git and thought the problem solved.
Coming off the summer, we had great momentum. our game was ready for new levels, characters, and cosmetic features. We had a plan on when and how to finish the game and what the publication date would be. We were assuming we could push forward with the same direction. We were wrong.
Over the summer I did an experiment with my thesis game. I decided to attempt to recreate it in Unreal Engine 4.
This came about as we learned the plugin we were using to do networking was unable to give us the performance we needed. With unity 5.2 networking brand new, I wanted to attempt to get the game running in an engine where multiplayer has been a part of the system for awhile.
I found Unreal has a cube camera that performs the same function as our projection, but it is offset to allow the back to have a full camera, rather than be split along left and right.
However, the cube camera was not meant to translate it’s rendered capture out as this projection, but used as a static reflection generation tool. So I had to write a custom shader that would translate the cube to a plane with the same projection.
Excited with this, I made a quick mockup multiplayer, and found a problem. When the multiplayer is running, the cube maps are shared across the server, meaning that the client and servers are fighting for control over the cube texture. I turned to working on spawning the camera and texture dynamically, but was outpaced by the unity side. When they showed Unity 5.2 was able to make a stable connection with no visible issues, I sacrificed these efforts and moved back to unity.
This week was EAE Day. We spent the morning setting up, hauling computers, and stealing power.
After the setup we had a paid lunch with local industry folk. It was nice to be outside having a chat.
Then the work started. We showed the game to a ton of people: industry, community, family, peers. In doing so we found a known bug appearing more and more frequently.
Somehow the input queue to the network overflows, which causes the client to crash and have to reconnect to the game, or reboot completely.
We spent some time trying to hunt down the bug earlier, but couldn’t make headway and pushed it to the Known list for further review later.
Despite the constant crashing the feedback was, again, overwhelmingly positive. People loved it, and we got a couple interesting suggestions for iteration:
Deal more damage when shooting behind, but take more damage when shot in the back.
Guns that shoot in multiple directions.
And, my Favorite, Add Wall Walking.
I went home from this happy, and with a plan to do some work over the summer months.
We showed our game off at a small indie game fest and got positive results. This was just a small test run before the main demo, really to see if our lan switch would circumvent spotty network connectivity issues, which could break our game. The feedback from the people that showed up was overwhelmingly positive.
This is the last week before we present the game at EAE Day. This is our demo day where industry and community members can come see what we’ve been doing locked away in a windowless room.
This week was devoted to polish and merging. The producers would play the game, the other engineers would listen to their feedback, implement a fix, then tell me. I would merge the change and give the producers a new build.
We got the character model and animations in and forwarded across the network. So now players can see each other moving about.
With polish and merging done, the last thing to do is EAE Day.