StarSystem Lander

Today I am going to share my design of the game I am going to make during the coming days. As I already mentioned before in my previous post, I am learning some more Python and game programming at the same time. My plan is to make few small games before summer really starts and to learn at least a little bit of actual game programming. It is actually a sad thing, that they don’t teach game programming at the university, because it is fun. 🙂

The Idea

I am not planning to do anything very complicated and I didn’t come up with truly awesome idea for a small game. So, I will be programming a lunar lander clone, which I decided to call StarSystem lander. The idea is to land safely on a planet without destroying the spacecraft or running out of fuel. Those who don’t know the game can check out for example this youtube link: http://www.youtube.com/watch?v=X34MB_P37jM

My plan is to make a little nice graphics, although I actually think that the wireframe looks nice and nostalgic. I just want to learn to make nicer graphics, because that is the way games nowdays are like. I will not probably reach a cool looking level of drawing, but at least I am giving it a shot.

Features

Okay, so the features for the game are supposed to be something like this.

  1. Movable spacecraft, that rotates 360 degrees
  2. Fuel meter showing how much fuel is left
  3. A High-score list according to with how little fuel and how fast the user can land the ship
  4. Different planets with different gravities (Moon, Earth, Mars, etc.)
  5. Graphics
  6. Some sounds (space is an empty place, so no music)

This is propable all the features that the game should have. If someone comes up with other good features, please let me know, so I could also try to add them. But these are something I will try to accomplish in the coming week or two.

Sketch

When designing for the game, it is important to make some kind of sketches, graphs, etc., to shorten the actual development time. I draw a sketch of the game on pen and paper (that is really THE FASTEST way to prototype) while sitting on a morning train from Lappeenranta to Joensuu today. Because I don’t have a scanner at hand, I will make a paint sketch here to give an idea of how I see the game looking like.

This paint sketch looks very horrible, but hey, this is something I made up in a few minutes. The one I had drawn in my sketchpad looks a lot more nicer. (maybe I should have taken a picture of with a camera…. well, next time). All in all, I really have to admit it, I am no graphics artist, but hopefully I will manage with all these ”oh-so-hard” graphics 😛

The game objects

Now, to the actual part I am a little better – designing architecture of the software. Because I will be doing this in a prototyping way and not giving way too much thought on all the parts (the game is not that big, I can easily change things when needed, as long as I program it properly). So, the main components are SpaceShip, Level, LandingPad, Timer and FuelMeter. These are the pieces the game is made of (drawn on the screen). The game engine beneath is of course it’s own case, but I will now just document some ideas of the game parts.

SpaceShip
location
speed
direction
fuel
Rotate(direction)
Throttle()
Move()
getFuel()
getDirection()
getLocation()
getSpeed()
checkLanded()

This is propably the most complicated of the classes. The spaceship has location (where it is on the screen), speed (= how fast it is moving), direction (which way it is moving) and fuel (how much fuel is left).

The methods that the spaceship has are Rotate(direction), which turns the spaceship either left or right. Throttle(), which is used to gain more speed to the direction the spaceship is facing. Move() is used to actually move the spaceship on the screen (this is for drawing reasons, which I will explain about a little bit later). The three get functions are used to get the specified information of the spaceship (like the current location). Also there is a checkLanded() function inside the spaceship class, but this I might probably change to somewhere else later.

Level
groundLocation
gravity
GetGroundLocation()
getGravity()

Level object will propably contain the picture of the ground (how it is formed) and also contains the gravity value of the planet in question.

LandingPad
location
getLocation()

LandingPad is an object that will be placed on top of the actual level. This way there is no need to program to the level object the location of the landing pad, but to have it as an individual object, that can be called to check if the ship has landed at correct place.

Timer
time
showTime()

Timer is used to get the time how long the game has been running. It just displays the current time on the top-right corner of the screen.

FuelMeter
fuelLeft
DisplayFuel()

FuelMeter displays the amount of fuel left. Every time the user Throttles with the spaceship a small portion of the fuel is used up. The fuel meter draws the current situation of the fuel on the right side of the screen, under (or next to) the Timer.

Next Time

I have now demonstrated a very short and brutal design of the game. As I will be programming more and more, I will probably change classes a little bit when needed, but my goal is to get something done quickly. My next post will be about programming the StarSystem Lander game. The coming weekend will be pretty busy day for me, because I will be participating in one seminary. Expect for the next update around next week. And please, feel free to leave comments.

-Japskua

Android code camp – a week after

Okay, the Android codecamp is now in the history. It was an interesting week of coding although this time we did not take it as seriously as we have taken some in the past. One week is not much time and when programming to a whole new platform, it takes a while to learn things. Nonetheless the groups managed to do some really nice applications. I will give a short view on all of those.

1. Lunch Magnet

This was an interesting project. It’s goal was to gather friends nearby and ask if they want to have lunch together (simple, yet oh-so-problematic sometimes). So no need to make all the phone calls and ask who is where. Just login to the system and see if anyone is nearby (at the university for example). This project can be found from here: http://www.codecamp.fi/doku.php/android2010/grp16/start

2. Base Jump

Although this one is a very simple game derived from the google’s android tutorials, the space lander (or something like that), it was still something nice and appealing to me. It is simple, fast to play game where the idea is to jump down from the roof of a building, open your base jump parachute just in time and land the target – all this as fast as possible. Very simple game as I said, but this is something I like in mobile phones, a game that you can play for few minutes when waiting for a bus/train/friend/whatever. This game can be found from: http://www.codecamp.fi/doku.php/android2010/grp10/start

3. Androchi

This was an interesting idea, going back a decade (or maybe even more, I don’t remember quite well). The idea was to make a tamagotchi for android phone. It works pretty well and even the animations looked pretty nice. This application was a good success, at least codecamp wise. Few days, nothing too big, simple idea, nice polished look and even working. Good job! http://www.codecamp.fi/doku.php/android2010/grp2/start


These
programs I mentioned are just few ones that appealed to me. Others will propably disagree, but that doesn’t matter. All the applications made during the week are available from the codecamp website: http://www.codecamp.fi/doku.php/android2010/start
There should be instructions as well as source code for most of the programs, a short introductions and few pictures. Those of you who have android phones (with 2.1 SDK) can give the programs a try. Those who don’t, you can try an emulator from google if you wish.

All in all I feel that the codecamp was again a great place to learn something new. I wasn’t very much familiar with Java, but I learned a lot during the few days of coding. Also, the android is a nice platform and has some nice tutorials for developers. The Google APIs however are outdated and not very informative, but the android developer community has posted a lot of tutorials, code snippets, etc. on their websites.

ps. I am currently doing some maemo development on my N900, so check out my blog every now and then for updates about that.

Android codecamp

The University of Lappeenranta has a habit of arranging codecamps once in a while. The idea of such a codecamp is to learn to program on a certain kind of platform in an intensive (usually) week-long “camp”. Lots of students gather together to create new applications and to learn new technologies. This time the codecamp is about Android programming. The camp is held between 15th and 19th of March. This time, in addition to University students we also have participants from the Saimaa Polytechnic. This means that the competition is even tougher than before, the room is more crowded, the atmosphere is even better and the smell after the long days (and nights!) of programming will be really something! More about the codecamp can be found from here: http://www.codecamp.fi/doku.php/android2010/start
A picture from the starting day

About Android

Propably many of the readers know already something about Android, but nonetheless, I am going to give a very short description of Android.

Android is an operating system created by Google for mobile phones. Most of the phones sold here in Finland are not yet Android based, but the amount of Android phones on the markets is growing all the time. The development community of Android is really active and it seems that there are lots of tutorials available out there (just go and google out!).  Android platform is also completely open source, so anyone with enthusiasm and knowledge can make it even better. Google also provides pretty good APIs (Application Programming Interfaces) for their own services, like google maps and so on… You can read a lot more about android from http://www.android.com/

My Team

We are having three persons groups during this codecamp. My team mates are Rostislav Malevich and Johannes Tattari, with whom I have already participated on many codecamps (actually this is the 5th one for Rostislav 😛 ). We do not have any experience of Android before, so this will be a very interesting chance to learn something new. Johannes also has an Android phone, so this will give him some programming experience to start his own projects. Our idea is to make a location based virtual mobster game, where the player fights for ownership of territories against other players. The actual project can be found from the University’s codecamp wiki: http://www.codecamp.fi/doku.php/android2010/grp6/start If you are interested in finding out more, please go and visit the page!


Rostislav and Johannes programming