From Kajaani to cosmos

It has come time to release our first publicly available build for Spehs. This version – “public pre-apha 0.0.0” – contains a glimpse into most of the features that we wanted to develop for this game. Many of the game’s features are still in very early stages. The game balance is almost non-existent, but we think that its still fun to play. It does require dedication to get to know the controls and the “unique” user interface. The future of Spehs is still hazy, but the development will most likely continue some time in the future.

Head to the download page to get the latest build: download.spehs.com

Contentwise, the public pre-alpha version 0.0.0 includes:

  • Huge environment: 4722366482869645213696 units wide
  • Ship editor: endless ways to construct space ships with different properties. Space ships created in the editor are saved into ”blueprint” files, these blueprints can then be used to spawn ships into the game world.
  • Multiplayer functionality
  • Immersive soundtrack by onrk
  • 3 Races: Human, Pragux and Prahian
  • 255 Randomly generated NPC factions per world
  • Randomly generated enemies/allies, asteroids
  • Randomly generated missions
  • Faction to faction trading system
  • Intense title screen experience
  • Quite frankly, many bugs

The public pre-alpha does NOT contain:

  • Industry level multiplayer networking: you will not be able to run a server with more than a few friends
  • Tutorial: patience, trial & error are your friends.
  • Finished art/visuals
  • A depiction of the underlying story

Update

Hey there, its been a while since the last post. This entry will briefly explain the project’s current status.

In the midst of school and job searching, the Spehs development team productivity has had some setbacks lately. Rest assured, the project is still alive and well. At least for my part, the development will most likely continue past the initial public version (public pre-alpha), which we hope to release before the summer.

We still want to add some things for the pre-alpha. The game balance is way off and the UI/general control scheme is very inconvenient, making the game very hard to approach. There is no tutorial or even a text guide. A mission system is also being added. Eventually there will be a story, as well as randomly generated mission content. The story will most likely be text based – so no fancy videos, voice acting or stuff like that. Well, maybe later, who knows?

While the game is still very much a work in progress, onrk has done a great job in composing the soundtrack. From what it looks like, the pre-alpha version will likely ship out with the soundtrack in action.

Spehs revision: years 1 and 2 [part 2]

This is a continuation post from the previous, [part 1].

The summer 2016 was a relaxing one for me. Don’t get me wrong, I had a lot to work on. But it didn’t have the same kind of weight that Spehs put me under. I got to have a good laugh for a while and make a bunch of new friends in Singapore.

In projects like these, its crucial to maintain one’s mental balance. Luckily there are still friends and family members around to see every now and then. Notable for the story, SikSakJiiPee is one of them. To him I am able to talk about Spehs since he is genuinely interested in the project (as long as I don’t ramble on about it for too long, which is usually the case). Even though Juuso had done a couple of songs for Spehs in the past, we were missing a dedicated musician for our project. SikSakJiiPee was willing to lend us a hand at creating the soundtrack at some point when the game would have progressed further into development. To our surprise, in the middle of our student exchange in Singapore I received a message from SikSakJiiPee presenting us a song made by a friend of his, who happened to be a musician by profession. In his message SikSakJiiPee said that his friend (by the name of onrk) had somehow felt inspired by the game’s prototype after seeing it. Along with it came an offer from onrk to get involved with the project. We were not many and his presence was greatly appreciated as onrk joined the project on the summer 2016.

Apparently, onrk had recently started to take interest in experiementing with the synthesizer. Furthermore, he had some common interests with us. The whole space setting seemed to offer him a suitable environment for experiementing with sound. As the first batch of songs came to me, I was excited! I consider myself a fan of soundtrack music, so getting my hands on a folder full of songs that were to present the game that I was making felt downright incredible. Initially there was an idea of doing some sort of layered, dynamically adapting music. But after hearing the first songs we gave up the idea and encouraged onrk to work on the traditional track based soundtrack like he had done until this point. Ever since then the songs have become somewhat influential as I try to draw some inspiration into my own work from them. I believe that audiovisual work can greatly benefit from a two-way interaction like this – a batch of songs is created based on the concept of the game, after which the game development can use the musical input to produce more content for the game, and the cycle goes on.

Putting music aside, the return from Singapore at the end of August marked the day of Spehs going back into production on the coding side of things. Knowing the teacher from last spring, we were allowed to work on the project on the weekly project day once more, even though it was a course for a customer project. Technically, me and Juuso acted as both the customer and the developer for the product. What I’m trying to say is that it’s nice how our school can help us out in a situation like this.

Until now, the objects appearing in the game were entirely randomly generated on the spot, without any relevance to the (non-existent) environment surrounding the player. And another thing was that when an object slipped out of the despawn range, it would disappear permanently. These two major drawbacks were to be addressed during the course of autumn 2016. My job became to be dividing the world into chunks, and saving those chunks on disk for later use, should the player ever visit a same place more than once (which was more than likely). Juuso took the job of generating the massive environment of Spehs. So far this has proven to be nothing but a challenge, as the pure size of the game’s universe is so ridiculously big. We are hoping to come up with a solution in the near future as otherwise we will have to reconsider some aspects of the game.

Present time, November 2016, chunks seem to work as intended and I have began to work on various other tasks. I go from one area of gameplay to another to keep my recent memory up to date with the relevant  codebase. Slowly, we are moving towards the point of trying to reach out for some publicity. But until then, we will have to keep on working hard and have our hopes up. Setbacks and walls can – and have been countered many times by just taking a break. Realistically the only obstacle on our way now is the time. But with enough support, even limited time is just another wall to climb. My hopes for Spehs is to reach a state of satisfactory. That state may not be a perfect, complete game – but it should be something that someone could genuinely enjoy. The game should differentiate itself from others so similar to it and offer the players an unique experience.

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.