Sunday, 3 January 2010

Week 10 : Menus & more music

With the music system in place it was time to create the games menu systems. For another module I had been using the Microsoft Game State Management sample @:

This is a very well thought system that handles the games menus but also the game state. I would have used this from the very beginning, but in the early days of this project I wasn't comfortable enough with polymorphism,inheritance & events to risk using it. However, while it was too late to use it in this project I could still replicate some of its structure when making my own menus.

Like the music player, my menu system reads the state of the game and determines what to display and make of the player input at certain states in the game. There are two different menus and two screens , all of which read input from any connected game pad.

Here's a video in which I play around with the game menus and music system:


- Logo screen : Displays the games logo and then displays 'Press Start' once the game has been loaded
- How to screen : Displays instructions on how to play the game, 'B' or 'Back' can be pressed to return to the main menu
- Main menu: Has three menu entries that allows for the game lobby to be run, a how to screen to be displayed and the game to exit.
- Pause menu: Has two menu entries, resume and quit(which returns to the main menu)

The menu transitioning and effects could be improved upon but creating the system took longer than I expected so any additions will have to be made during polish & contingency time.

Week 9 : Music & game state

Apologies for the lateness of this post, but everything is very much on track and I'll try to get back to my normal posting routine.

Since I'm outsourcing the games artwork, I had more time to do other tasks so I rearranged the schedule slightly:

Now that I had chosen the music for the game, I needed to create a system that would play/pause/stop the music at the correct time. Since inner game classes are deleted whenever the game is reset it didn't seem a good idea to include them within the core game code. So, I created an external component that monitors the global game state, accepts input and decides when to play music.

I didn't have any problems with the creation of the component but most of my problems stemmed from my existing game state system. This was created in the summer and is the base of all game phase logic and execution. I wouldn't call it a very good system, and I had I written it today, I would have used events rather than having one global game state that everything depends on.

I thought about re-writing the game state management with the use of the knowledge gained since the summer but it would be too time consuming. I decided I'd stick with what I've got and created an internal state system for the music player so that it wouldn't have to change the global state (which could be catastrophic for the game as it's main systems are fragilely balanced on the current state).

So my basic plan was to have one song play when in the menus and lobby mode and then have one looping track during the game. Once I implemented this successfully it hit me, having one song is going to get very annoying! So I added more songs to the games soundtrack but this presented me with a challenge.

I didn't want the same song to play twice in a row and I didn't want there to be a set order of songs, so I wanted them to play randomly. To achieve this I stored which song was played last then got a random number that was inside a loop that would finish only if that number was not matching the song that was last played.

Since I managed to do this pretty quickly, I decided I'd add some more functionality to the music player, letting the user change the song and go back to the last played song. I also created a small graphical panel that momentarily displays information about the song and then fades out.

Ok so what does the music player do?

- Loads all the songs and objects and tells the program its ready
- Plays songs at a lower volume than the game SFX
- Plays and loops one song during the menu & lobby phases
- Plays one song from a playlist of music during the game phase.
- Allows users to change the song to the next random song
- Allows users to go back and play the last song that was on.
- Displays a small graphical panel with information about the track that appears briefly when a new song is played.

I won't add any screen shots to this post because I'll be uploading a video next week to show how the music player works with the menu system.

Monday, 21 December 2009

Week 8: Art & sound

This week I have been able to do very little as I had to have an operation and spent the week in hospital. I'll see with my tutors what sort of leeway I can get with time missed but I doubt there will be any given so I'll have to make up for time lost in the coming 3 weeks of vacation.

I did manage, however to research the music style that I wanted for the game. The music had to be royalty free and I knew of a great place to find loads of it @ www.jamendo.com

I found an artist that makes electronic music. What I like about one of his albums is that all the songs share a similar pattern which would make for good transition, menu and game loop soundtrack:



Monday, 14 December 2009

Week 7: Art asset list & progress report

This week I had to:
  • Create an art asset list
  • Write the progress report
Unfortunately I wasn't able to do the asset list this week, but it should be done by this coming weekend, a lot of deadlines were for this week so I'll have time to catch up by the weekend.

Last week I mentioned that I might be able to outsource the games artwork and I can now confirm that I'll be doing this. After having discussed it with the university, it is well within the 'rules' to outsource aspects of individual projects as long as they are properly referenced and credit is given where due. The artist is also a 3rd year ISVG student, Kwame Bannerman (in return, I am doing the coding element of his project).

Here's some early concept art he's come up with for the characters head:

The idea to outsource my games artwork isn't a new one, in the early stages of project planning I had tried to get artists via forums/the internet, but I considered it too great a risk. Now that I have an artist that I know and can meet, I feel a lot more confident about entrusting him with the task.

While I was confident that I could pull off the game-play that I wanted I was relying a lot on my (non-existent) artistic skills. Hopefully now I can have a game with a good balance between both the technical and visual.

Tuesday, 8 December 2009

Week 6: Paricles & hardware testing

This weeks tasks were to :
  • Revise the existing particle system that was in place
  • Add some more effect types
  • Test the game on an Xbox 360

The problem with the existing particle system was that it was using a lot of memory and causing the game to slow down. So while it did work, it didn't work well! I went back and scrapped the particle system manager that I had written and took a different approach. This time around I used lists and queues with simplified things and added in checks for when things should be created or deleted. The problem I had before was that some particle systems were being created constantly and there was too much back and forth between several arrays that was creating a lot of calls to the garbage collector (which was slowing down the game).

However, once I had solved the problem I realised something. I planned to add in effects without really thinking it through. I would first need to have an asset list of all game art(next weeks task) along with an idea of what my characters were going to look like. For this reason I've postponed creating extra effects until I know what I want. This will take place during the Christmas break, during which most of the art will be created.

Moving onto hardware testing. I was able to get a free 12 month trial account with Xbox live thanks to the university MSDN scheme so that was no problem. When I tested the game on the console it gave me mixed results.

While the performance was good and there were no major bugs compared to my tests on pc, the tv screen does cut off quite a bit of the image. I had looked into drawing all my games graphics during the summer (the 'tile safe area'). Although I actually had the code set in place, I forgot to implement it! This will be something that I will have to amend before the play testing session.

The other thing was that the characters were very small, and generally, the whole scale of the level seemed to big in comparison to the characters. This is something that's been at the back of my mind for a while, but technically speaking, this would be a nightmare to change at this stage. I might find a compromise with creating bigger characters, but this change may not happen due to time constraints.

On a final note, I may have the possibility to out-source the artwork for this project to a very good 2D artist so I'm investiagting that possibility and would make changes to the time spent on artwork in the schedule should that happen. At this stage it's a possibility, I know out-sourcing is permitted for individual projects but I just want to make sure that my tutors sign off on it before going ahead with anything.

Sunday, 29 November 2009

Week 5: Re-organising/Re-thinking

This week, I had a lot of things to do for this project...none of which involved touching the game engine at all! Here's a video of the current version of the game, it's just me messing around just trying to show the different systems & mechanics.






The tasks
  1. Re-evaluate my project and goals by adjusting my schedule and creating a Gantt chart to better communicate how I'll be spending my time.
  2. Produce a narrative for the game-play
  3. Research fighting styles , character design and design a new playable avatar for the game.
Completing tasks : The how and why

1.

As I mentioned last week, meeting my personal tutor was the catalyst for me to rethink the way I had organised my time. I'm not suggesting that it was the only motivating factor, as over the first four weeks of tasks I was definitely paying the price for some over ambitious planning.

So, before I changed anything I went back to my pitch presentation and supporting documentation to get the list of my original goals for this project.

While I had to make changes, I didn't want to contradict or betray what I had said I was going to do originally. What I was able to do was prioritise the aspects of my product that I wanted to be as polished as possible:
  1. The technical side : Since this is my main focus (programming & system design)
  2. The visual quality of the product : This is, after all, a show-reel piece that needs to look and sound its best
  3. The game play : While originally this was a higher priority, I realise now that I won't have time to do the extensive game testing that I had planned, but I can still do some at least.
What I got rid of was one of the two game testing sessions along with the bug fixing sessions that proceeded and followed them. I also have removed the use of the 'Microsoft Game state management' sample from my project. I originally planned to use this as a menu system for this game, however, having used in recently for another module I realise now that it follows a completely different program structure to my game engine & would require a lot of time to implement. So, instead, I've opted to make my own simple menu. This is scheduled later on in the project phase since due to its low priority.

What I added in was a much needed week to create a full art asset list along with an additional week to create game art. Generally, I've tried to spread things out a bit more realistically where possible, as I've found that I've often too many tasks for one week.

I also had to make an unexpected addition for next weeks tasks as the particle system that I implemented last week is quite a resource-hog. I hadn't noticed until I played around with all four players emitting particle effects that it actually slowed down the whole game which could potentially crash the whole game & is a huge risk.

While I've tried to mention everything that I changed/moved I'm sure I'll have forgotten something so here is both the updated schedule and new Gantt chart to see the changed for yourself:



(Note*: The Gantt chart was a downloadable template which automatically greyed out weekends, however I DO work weekends!)
Apologies for the poor quality of the Gantt image, its a long chart so I had to scale it. The downloadable excel sheets of both charts can be found in the sidebar.

2.

I was asked by my tutor to come up with some sort of narrative / incentive for the game. While I did actually have a loose idea of why these little characters were fighting, I never committed to my documentation :

You play as a small atomic being whose goal is to power up the dormant world you inhabit with your own type of energy. However, you aren't alone as other beings are after the very same thing ! Only the toughest and smartest will manage to gain the power to reach their goal, do you have what it takes?
3.

One issue that more than one tutor raised when I first pitched the idea for this project was that the characters were a bit boring & unoriginal. After discussing this with my personal tutor, he suggested that I move away from a human-like fighting style and look at the animal kingdom for reference.

So, I went and looked at the way that mammals, reptiles & insects fight, and what I found the most interesting were the animals (and sometimes people) that used their heads as their attacking instrument.


While I don't have access to a scanner at the moment (sketches will be up asap), what I came up with is a character that has a spherical base (with a rotating atom inside it) with a human-ish head on top of it. The character will only use its head to attack! Heres the rough idea (images stolen from google)







Monday, 23 November 2009

Week 4: Particle System (80% Complete)

This week I met my individual tutor which has changed my overall plans somewhat. Originally I was going to carry on with my schedule till week 6 (implementing the menu system), however, after the meeting, I needed to re-evaluate my priorities

It was suggested that I rethink some aspects of my project:
  • Come up with an original character
  • Research styles of combat within games
  • Focus more on the artistic side
  • Create a Gantt chart of schedule
The above tasks need to completed before next weeks personal tutor meeting. With that in mind, the rescheduling and reorganising of the project will have to be moved ahead a week to project week 5.

With a possible change in combat moves & mechanics coming up due to character redesign I've delayed the creation of the 'how to' section.

However, I stuck to the plan for this weeks task in ,modifying the sample particle system and effects and a system to manage them. What I actually found the most difficult was managing the different types of particle system, and not creating and implementing them into my game.