My first game: Meteoroids - Full Version

Hi everybody.

Ok, My first game started out as an Asteroids clone. I wanted to start with a simple game hoping that something small would ease my introduction to using Unity.

Here’s a link to the game as it currently stands.

http://forum.unity3d.com/threads/247235-My-first-game-Meteoroids

I’ve had a few people ask me about a full version of the game and I’ve been thinking it over for the last week. I could easily just remove the ads and call it a day. I must be a glutton for punishment or something because I’m not happy with that idea. If I’m going to create a full version then I’m going to revamp it some and add a little bit more content.

So I guess let’s start with the current state of the game. Here’s a few screenshots to get us going. You can also find them in the thread linked above.

This is the title screen:

Here are a few more screenshots showing some of the gameplay. Some of these are from an earlier build but I like pics so later in the process I’ll share some more recent shots.

I have a shield system in place that is powered by the players score. You can see it in action here.

There are several different weapons the player can get from random powerups that drop on destroying a Meteoroid.

I downloaded Unity 4.5 last night. Here is the current build of the game using it.

https://dl.dropboxusercontent.com/u/14519496/Meteoroids/Build10%204.5/Build10%204.5/Build10%204.5.html

There is still a bug floating around that causes the player to spawn more than once. Just noticed it last night so I’m not sure if it was always there and I never saw it or if it was a consequence of the 4.5 update. It’s on my todo list as soon as I figure out what’s causing it. lol

So now what? Well first off I want to let everyone know that I’m coding in Boo. I know I’ll probably get a lot of flak for that but I like it and I’m not going to change that. I may share a script or two along that way if there is enough interest but just to warn you it will be in Boo and I’m not very good at commenting my code.

With that out of the way let’s see where I want to go with this game so we are all on the same page.

1) Localization. I want the game to be able to be played by as many people as possible without language getting in the way. I think that the best way to do this would be to remove all text from the game and replace it with icons or pictures that represent what they do. I like this idea the best and I won’t have to worry about scrounging up translations for everything. I think that numbers are probably universal enough that I can leave them in the game as is and people will still understand as least what they represent.

  1. Levels, progression, waves, and possibly boss fights between levels. The game as it currently stands will be used as is with whatever bugfixes are required as a sort of endless play. I think it works in that context pretty well. As far as the normal play goes I want to have levels with multiple waves. At the end of each level I want to introduce new weapons/obstacles for the player to use and allow the player to choose which weapon they can equip during the levels.

Boss fights sound interesting but I’m not sure how to go about it yet. I want to keep the current movement mechanics so I’m not sure how to balance it all.

  1. Leaderboards. Currently the game stores the top 5 high scores locally. It works fine as far as it goes but I want something more global so that people can compete against each other. Of course this leads to other social aspects of gaming so I’m considering Facebook integration. Not sure yet. I have the SDK downloaded already and imported into the project but so far it looks pretty alien to me so I’ll have to do a ton of research. I think the game would be better for it but not sure I can pull it off yet with my current knowledge.

  2. Quest system. I want to introduce a sort of achievement or quest system to allow the player to unlock weapon upgrades that they can use during gameplay. I don’t really like the idea of just rewarding the player after finishing a level. I would rather have the player gain unlocks by doing something in game.

  3. More content in general. I want there to be more weapons available and to have the Meteoroids be more distinguished from each other.

  4. AI. At this point the game is totally and completely random in nature. I’ve tried implementing individual AI on the Meteoroids themselves and it just didn’t work well. It made the game too difficult and unfun to play. Instead I’m going to upgrade the current gamecontrollers into something to handle the AI. I have a D&D background so I’ll call this the Dungeon Master. lol. Not sure how involved I need to take it yet but I guess we will see how it evolves.

I think that’s about as far as I want to take this game. It’s probably going to be a huge undertaking but game development is very competitive and I need to bring the game to the next level if I’m going to make it successful.

Throughout this process please feel free to offer any feedback you would like. Good or bad doesn’t really matter since it can only make the game better.

Today I started work on the Dungeon Master. I combined all the various Game Controllers and removed them from the game. Not much to show visibly at this point unfortunately.

I also began work on Localization changes. I reworked the title screen a bit. Here’s a before and after shot.

I found with testing the original game that the buttons were a little too small on some devices. To fix this I made the buttons larger. I also moved them to the side a bit to make room for future features.

The original menu system was all done with the Unity Gui. I decided to change that and do it myself.

In order to keep the graphics consistent throughout the game I used the same technique I used to make the Meteoroids. Basically just meshes and shaders. I like it but I’m not 100% happy with how it looks so there may be changes later. In the mean time it’s all functioning.

To get the menu working I threw a collider on each button and wrote a short script to handle mouse overs and mouse clicks. For anyone interested here’s the code I used for the play button. The other buttons have very similar coding.

import UnityEngine
class Play (MonoBehaviour):
    private OriginalColor as Color
    def Start():
        OriginalColor = renderer.material.color
    def OnMouseEnter() as void:
        renderer.material.color = Color.blue
    def OnMouseExit() as void:
        renderer.material.color = OriginalColor
    def OnMouseDown() as void:
        Application.LoadLevel('Level 1')

I also reworked the particle system I was using to create the nebula and made it a bit more cloud like.

Well that’s it for today.

I just wasn’t happy with the title screen so I’m reworking it again. lol

I think I like this a bit better. I needed something a bit better than just different backgrounds for each level. What I decided on was to have each level take place around a planet in our solar system. I started with Earth. The planet itself rotates as well as the clouds and the Moon.

As you can see in the pic I’m experimenting with scanlines. It gives the game a definite retro feel. I’m not sold on the effect yet though. I’m still thinking it over.

I had a request to show my planet building so here’s a short video showcasing it.

Today I finished the Title Screen. At least as much as I’m going to for now. There’s the screenshot. What I did was add in a short cutscene that shows the aliens bombarding Earth with Meteoroids. Cutscenes sure are labor intensive when you are trying to figure out how to do them. lol

I took a short video of the whole thing in action. I consider this as the games Attract Mode. Every arcade game should have an attract mode. lol

I’m not sure if it makes this more interesting or not but this is all done with an orthographic camera.

So far so good. Level 1 takes place around Pluto. So far I have the now dwarf planet and it’s 5 known moons done. Geeze who knew there were 5 moons around it. lol

Once I’m done with Level 1 i’ll share a build for everyone to check out.

I’ve spent the last few days getting level 1 setup and playable. Not quite there yet. lol

Since level 1 starts out around Pluto I started there. Here’s a closeup shot of it.

Nobody will know for sure exactly what Pluto looks like until NASA gets there in April 2015 but from some of the artists concept art that is based on what we know of it I think it looks pretty close.

I’ve been working with small mini cutscenes and have had some success. I’ve come to realize though that the way I’m going about it is just going to take too long. It looks good and it works but I don’t want to spend hours and hours just to set up a 1 minute animation.

If I’m going to do things like this I’ll have to come up with a much better way to go about it. I guess that’s my next task. lol

Time for a little update on how this game is going. Level 1 is still under construction but I think I have enough done to show where this game is going.

This is what I’ve been trying to figure out over the last few days. Move this object here, spawn that object there, Shrink this or enlarge that is all pretty easy. The part that has been a real nightmare for me has been the timing. Is this part finished? Well then do the next part. Wait until this is done to start something else. It’s been problematic and very buggy.

My solution is to introduce a timeline.

Basically what I did was to jump into ms paint and created a simple sprite to show me where the timeline was. I then placed an object on the screen as a marker and put a script on the timeline that moved it upwards through the scene. After that I created empty game objects, threw some colliders on them, and placed them on the timeline where I wanted things to trigger. Each trigger has it’s own script that makes something happen. Here’s a video of the same scene as above but with the timeline visible.

I think this is going to work. So far it looks good. It feels a little odd for me to do it this way though. lol

I’ve been working with this game for a bit now and after making some of these changes I’ve come to realize that it just isn’t adding more fun to the game. In some ways the original free version is just more fun. I could continue to work on it but in the end I don’t think it will make the game more fun to play.

So what I’m going to do with this game is take it into a completely different direction. Time for a genre change.

The graphics themselves are just screaming Match 3 to me. What I’m going to do from here is keep the graphics and I think a lot of the gameplay as well.

Where this puts me is back to the design stage so after I’ve hammered out a few of the details I’ll continue on with the game here.

I wasn’t planning on doing this but sometimes the game just insists. lol.