Going in space with both feet on the ground
No I haven’t gone in vacation on Mars or something. I’m still around just a bit focused. I figured that if I’m to “pay” for the development of Spacewars that I might as well try to not waste money. Read here that I’m taking more and more days off from my day job to dedicate myself to the development of Spacewars and that doing anything else during that time is basically me wasting money on top of not making any.
So sorry if mails are not answered. I just try to remain focused that’s all. And when you read me rambling stuff about my 2nd run of Mass Effect 2 well it means it’s really late here. Way past the time I still can do anything productive.
With that said since this blog is also way for me to keep a log of the work done here’s an update on “Spacewars” (I really need to find the name I’ll give this project).
Oh look it’s moving and stuff!
When I look at these ships shooting at each other I know there’s something good in that game. Having the ships as your own design just make the experience more fulfilling. Well yes they look ugly right now but I can already see how amazing this could look.
The game is now at the first “completed” stage. You know that stage where 90% of the work is still left to do? But this is the whole game basically.
Scaling down to keep control
Right from the start I’ve been punching myself to make sure I wouldn’t add too many unnecessary features. Ideas? Oh I have a lot of ideas… But I want to keep control over this project and don’t want to enter a year-long development process. So what I’ve been doing is looking for the fun, dig a bit to make it shine, keep to it and iterate.
You’ll notice in the video above a space station and shield generators which were not part of the initial idea. And to be honest this stuff is still not in the final idea I have of the game. It may look here like I failed to do what I was trying to do by adding new stuff but really what you don’t see here is that to make the code easier to work with I had to iterate over some classes so that spaceships are not “spaceships” but “space entities”. I knew I wanted to have laser beams able to target missiles but the code was too specific toward “spaceships” so I created a new class named SpaceEntity that can be anything from spaceships to missiles … and space stations as well. So the space station was basically a test to make sure my code really achieved what I wanted it to.
Multiplayer won’t make me lose control
No really. Well it’s not quite multiplayer. Think of it as a level sharing process. Players design ships, put them in their zone and the data is saved. Another player wants to attack it, select it, the data is loaded and there you have a unique single-player mission! Add the basics of level sharing like rating (which here will in fact be points for winning or losing a battle) and that’s the basic idea of multiplayer.
In fact the two missions appearing in the video above were built this way. What you don’t see in the video is the “Create a mission” screen which is identical to the initial ship setup when starting a mission. When clicking the save button a string is displayed on the string which I can then use to load the mission later as new content.
To store those strings I’ll probably use GamerSafe and the LevelVault service. I just need to find a way to compress the data even more to that those strings doesn’t get huge. The save game feature of GamerSafe allow up to 10k of data to be stored and right now it would be too easy to go over that with say 20 spaceships. The spaceships in the video take about 300 characters in space when encoded but those spaceships are fairly simple.
I cannot really compress more the data (it’s converted to a compressed bytearray and then to a string) so I’ll probably look to cut some unnecessary data. For example the string of a component contains the pack, the type and the “level” of a component. I can probably replace those 3 values by a single numeric value that would act as a unique identifier. Not the funniest stuff to think about but it’s necessary.
So I’m building Flash clone of Gratuitous Space Battles right?
Eh… fair question I guess as I’ve been asking myself the same question. I have no interest in creating a clone but it’s true that I’m building a game with spaceships. It’s true that the level sharing process looks similar to the challenge system in GSB. So it’s a clone right? No.
Two big features different from GSB:
- Complete control over the design of ships (not just components but visual aspect as well)
- Complete control over spaceships when playing (in GSB you issue orders before the battle and then watch)
While I admire GSB for what it is I never quite got into the “give orders and then watch”. Doesn’t make the game any less good but it’s just not quite for me. So obviously I won’t build a game that plays like that. So Spacewars would be closer to a RTS like *insert whatever RTS with spaceships here*.
Of course I can’t deny that in a way GSB is an influence but at first Spacewars was an MMORTS. Since I won’t touch another MMO with a ten feet pole unless I’m paid for it (or paid by previous game dev work) I scaled down the idea to what Spacewars have now become. Should have I gone with my MMORTS idea then people would have said that I’m building an EVE Online clone.
So basically I know I’m not building a clone, I know it shares the same spirit and know some people will bring this topic later. Good enough for me.
To close this I’ll point you to Everything is a remix which is a nice piece about how real innovation is much more rare than we could think it is.