Spehs revision: years 1 and 2 [part 1]

It started on January 2015. We didn’t have too much to begin with. A pair of engineers, grouped together to make a game for our first real project at school. We barely knew each other’s faces as Juuso had just transferred in to our class. Armed with the necessary hardware, roughly four months of programming experience and our wits, we began to develop a sandbox space shooter which we sluggishly dubbed the ‘Spehs Game’. For the next four months or so we were able to develop a prototype of this grand game idea that we had envisioned. We worked mainly on Fridays and the weekends. It was a time when our coding practices changed on a regular, weekly basis. The deadline for the project finally got us at the end of May. The end result was… somewhat interesting. It was not something you would call a complete game, but the amount of working features was quite satisfying for our needs. The feedback for our game was generally positive and we actually managed to force some of our friends to try it and wasted quite a many hours during some of those sessions.

Then came the summer break. I used mine making a game in Singapore, while Juuso did whatever he was up to during that time. After the summer we began our second year of studies. I didn’t know it then, but this was going to be a rough year compared to the first one. We started the year by getting ourselves thrown into the basics of OpenGL. We were supposed to learn a lot in a very short time, for we had another project course starting soon. In two weeks time after the semester had started, the whole class was divided into randomized groups of roughly four to five engineers students.

It is worth noting that at this point me and Juuso had already discussed about the potential follow-up for our game. We talked about taking the game to the third dimension at first, but aknowledged in the end that there was still much to improve from our previous game, which was set in a 2D environment. The next school project was about making our first game engine, rather than another game. So, in order for things work out, we had to work on two projects at the same time. I recall it was around that time when we settled down with the idea of Spehs Engine. A game engine made purposefully for the premise of Spehs. Me and Juuso were allocated into different groups at that time, but behind the scenes we both worked on Spehs Engine.

Initially when the core features of the game were being discussed, we had two more engineers to bolster our strength. The scope of the game became something that four people could potentially manage to do in rougly eight months. Unfortunately, the project wouldn’t catch much fire underneath it because of the ever increasing workload that school brought on to us on that semester. The other two group members were to slowly slip away from the project and it was once again just me and Juuso. We didn’t make too much progress during that time, but I certainly didn’t want to quit. Neither did Juuso. I worked a lot on the game side of things. Juuso worked on the engine, just to get the most viable of features in. Spehs Engine didn’t have high level features from third party libraries or such. The rendering was done on openGL, the GUI functionality was done from the scratch on top of the engine’s primitive rendering. At the time of writing this the engine still cannot output any sound, but that is soon to change.
Christmas came and we had our hands on something that resembled what was maybe the bare spirit of the game. It was a hollow frame to be filled, but the polygons – oh the long awaited polygons were drawing on the screen. And the basic ship structure was working too. Such joy for me at least, it was made clear that this was not an impossible task (which it might have seemed to be for a while then).

The year changed to 2016 and we continued the development for the next few months. I can’t remember much from that time. All I can think of is we worked at our productive limit on top of all the school stuff. But the good thing was that the game engine project was over, and we were able to work on Spehs on the school project slot that spring. And we had two project days in a week to top it all. The game really started to take shape and it was mostly fun times.

Something had to be brought up and discussed. If we wanted this game to actually reach some players, we needed more. Until that time it was an idea burried deep underground because we lacked so much in experience.
For our game to have the potential to success, we needed multiplayer. Neither one of us knew how to do it, good thing I remotely knew what an IP address was. The teachers adviced against it, but we were naïvely obsessed with the idea. The core of the game was done by me so on the next holiday I began my journey into the world of network programming, and multithreading too. From a week of basic tutorial inspection I was able to get the time of day through a network. I was excited but had no idea how to make Spehs into a multiplayer. If this was not going to work, we could potentially lose months worth of work and quite surely our morale.

For the next two months I would work on the networking aspect of our game. Those two months felt like the hardest thing I had done in my life – this kind of a game was not a fair training ground for a beginner. But it was the work of my own choosing. There was so much stuff that experienced network programmes didn’t have to deal with because they understood the underlaying concepts, which I certainly did not. After the said two months had passed, it was like a miracle that one Friday the game very suddenly just took shape and began to work over the network. I grinned as I watched my ship fly over at Juuso’s display. I’m not saying it worked perfectly out of the box, but suddenly there was some visible feedback to strive us forward.

The rest of the spring was used for honing the network stuff while at the same time adding in more features into the game. Major changes were made on the engine side as well. Until then the rendering had a weakness of having separate draw calls for every primitive in the game. The new batch rendering system that Juuso came up with would group up those draw calls and substantially increase our performance, allowing the displayed game world to grow in size.

An AI was also developed for the game in the midst of all this. It was very basic but capable of sufficiently controlling the ships inside the game’s physics world using only the thrusters of the space ships. Straight up cheated AI movement would have been easier to do, but I felt it would remove a very important aspect of the gameplay – crippling your opponent with precise shooting.

Me and Juuso left for the summer break a week earlier than the others. I myself was pretty exhausted at that point, having 1050 hours clocked in on Spehs for the second semester, not including all the other school work that had to be done. I had signed up for another game project in Singapore. This time Juuso was coming along. We were about to take a three month vacation away from Spehs in the soothing warmth of an oriental paradise, or at least that’s how I see things.

This was a short summary over what had been done before the currently ongoing semester. Currently things are at better shape, and that will be the topic on part 2.

One thought on “Spehs revision: years 1 and 2 [part 1]”

Leave a Reply

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