So it has been a month since I last spoke of the Player One Engine. While my time hasn’t been fully optimised due to GTA V coming out, progress has been made on the engine.

Firstly there isn’t all that much to show right now as I stopped working on the graphical side of things to work on the other core engine parts. Right now the engine has the ability to render models of my own format thus support for other filetypes is on the todo list. The only model I have rendering is a simple cube so I really need to get something that will stress the engine just a little more. The cube is fully textured and has ambient and specular lighting on it. Bump and spec maps are the next on my list for it.

On the other side I have opted to go for an Actor/Component model meaning that instead of having all my Entities derive from a base entity class I have a simple Actor class that keeps a list of components. This system is now working for handling rendering and applying a simple rotation.

A message system has also been implemented for the components to communicate along with other game related events to happen. This system will likely be optimised in the future but for now it is working.

I’d love to be able to show off the engine soon but it has been hard when most of the things I have been working on recently are internal engine components. Hopefully soon I will have a post full of nice screenshots.

Right now I’m aiming to have something I can run around and test things in before Christmas.

 

 

You can download Neon Challenge to your Android phone with this link:

Neon Challenge Demo

 

Neon Challenge is my go at a simple game for Android that takes into account user skill while determining the difficulty level. For now development on it has halted but it has been a good learning excercise.

It’s been 2 years since I left University and since then I have only made one game. I kept that game simple and didn’t challenge myself as much as I could have.

My goal is to make a fully featured game engine with the hopes of creating a game in it sometime in the future. There are some key areas of the engine that I want to focus on for varying reasons:

  • Graphics: When working on Alexandria I didn’t have anything to do with the graphics engine and thus, don’t have the understanding and expertise that I want. I really want to make a good go of the graphics part of the engine and hopefully learn plenty.
  • AI: Being one of the most interesting subject areas that I took at university I would like to expand on my knowledge and make something more complex than I have done in the past.
  • Engine Editor: This was my main task in the Alexandria project and it was something that I enjoyed making. There were plenty of features missing from that editor that I could have done and I know I can make an easy to use editor that will give the user a lot of control over the engine.

As it’s the season of people going back to school I thought I should be no different as I still have plenty to learn in game development. Because of this I will be documenting the progress of the engine as to prove to myself that I fully understand what I have created and maybe even help anyone else who has ideas of making their own engine.

The engine will take some time to create but I am optimistic that I will be able to create a stable engine that could house many different kinds of games.

After the dust settled on my first full game I kept looking at it thinking I could have done better. I released it for all the wrong reasons. I wanted it out as fast as possible to make money from it and because of that there were areas of the game that I am still not happy with. That is why I am now going to be revisiting the code and making the game more like what I envisioned. The graphics will be updated and bugs will be fixed and it has been given a new name:

Neon Arena

This is to reflect the neon style graphics and the arena based gameplay that will be refined and polished.

I have no timescale on the improvement process but once it is done I plan to release it as a pay what you want game so that anyone wanting to try the game can while people who think the game is actually worth money can also help me with costs into my new project. I want to put out a good fun game and I know that this can be it.

So I have been working on a new project since Glare and that project is Rebuild. Rebuild is a 2.5D platform game, created using Unreal Engine 3. The game is currently in the early stages, where we’re playing around with the player controls and creating basic assets. Aside from the content creation process, design documents are also currently being written. My job will be the UnrealScript management on the project. I am pleased to report that the process is going well and we hope to have something to show off in the near future. I will hopefully have up some coding tutorials of some of the components we are creating for the game.

Glare started out as a project over 2 years ago. I was going to do all of the game myself so when it came to art I was basically screwed because I have no ability whatsoever to draw. I then looked at simplistic art styles because of this. Geometry Wars then became a big influence along with Pac Man Championship Edition. These simple vector based graphics could be easily replicated and end up looking good.

The main idea of Glare was to be a side scrolling shooter as that was in line with my ability at the time:

That was a mock up made in fireworks of how the game was going to look. You can note the horrible free XNA fonts used for all the text here. Further revisions to the design were then made including the idea of co-op in the game:

The inclusion of special weapons was thought about here. One idea was time dilation where the enemies would move slower than you and another was a wormhole/black hole thing that would suck the enemies in. After all this designing, university got back in the way so time was better spent on my assignments.

Then just over a year ago after I was finished with university I picked up Glare again as a project. Thing was I still wasn’t sure what I wanted to do. I had just finished a game in XNA which was a top down shooter that based it’s difficulty on how well you were playing. Because of this I looked at making Glare top down instead of side on:

This would also mark the first use of the font: Orbitron. A lovely looking free to use font. A story was to be included in Glare with mission objectives as you can see.

So coding properly began and I started making the game engine using Farseer Physics and a level editor so I could easily make up some levels:

A lovely set of collision markers there.

The first build of the game was interesting to say the least… If you are wondering I had only one sprite so the bullets shared the same sprite as the player. Also the bullets didn’t die when they hit anything so they stacked up. Couple this with being able to fire as fast as the code can run, you end up with something looking like that.

Small improvements were then made including adding enemies.

It was then becoming apparent that to create a story that people would actually want to play coupled with my programming experience would mean the game wouldn’t be all that fun to play. It was decided that I would concentrate on making an arcade mode instead which would feature lots of enemies and score hunting.

The first iteration of the arcade mode the Glare would grow up into.

Waves got added along with different weapon types. The game was finally starting to take shape.

 

Did some re-arranging of the HUD and added medals. You can see some of the parts being finalised here.

Then particles happened. As you can see, they got a lot better in the final version.

It was only now that Joe was brought on board to do a better job of the graphics.

Adding the new art made the game look loads better. And after a little bit of bug fixing and making sure it hit all of Microsoft’s certification requirements, it was put on the Xbox Indie Marketplace. I’m quite proud of that fact. I know this isn’t the best game you could ever play but it was a great accomplishment of mine to actually get this game finished.

The weird thing is, even after all the hard work and many nights programming it, I want to do it all again with a new project. This is my new addiction.

 

 

 

 

Glare

So I haven’t posted in a while as I have been face first in code for either an unannounced project involving PHP or Glare. Work has been progressing at a good pace now and I do hope to have the game done by the summer. I know that I can do the coding by then but being one of two people working on this (The other is doing the art) I will also have a lot of other work to do on the game as well.

One part that I have been enjoying as a distraction is the creating of the music for the game. I’ve played bass for 8 years and have dabbled in writing my own music on it so I like to think I have a slight understanding of music. Of course if I’d taken music through to A-Level and to Uni I would probably have a much bigger understanding but what I know so far is getting me by. :)

This is a first draft of what will most likely be the theme music of the game.

Hopefully I will be able to update this blog with more in-depth code discussions on parts of my game but for now I am concentrating on getting more done within the game. I leave you now so that I can tackle multi-threading. Wish me luck. :P

Bungie the game developer designed a system to rate players in their game Halo: Reach. The following information is accurate to their beta test of the game in May 2010.

In arena mode players play against each other and receive a rating at the end of their play session. This rating is deduced by the game stats. The statistics tracked are kills, deaths, assists and betrayals. This gives a raw rating. This rating is then passed onto an arc tan graph to beautify the number.

This method also makes it so that the better you play; the harder it is to get a higher number rating. To work out the raw rating, this equation is followed:

    \[ raw rating = (kills + sa * assists) - (sd * deaths + sb * betrayals) \]

Kills is the number of kills the player achieved. Assists is the number of assists the player performs in a game. To get an assist the player needs to do 40% of the damage it took to kill the person. That number is then multiplied by sa which in the Halo: Reach beta was 1. That means assists were just as important as kills. The number of times the player died is represented as deaths. This is multiplied by sd which in the beta was 1/3. This makes deaths less detrimental to the players rating. Betrayals are when the player kills one of their teammates. This amount is multiplied by sb which equals 1 so each betrayal will take off a kill from the rating.

Now that the raw rating of the game is worked out it can be passed onto the arc tan graph and be normalised:

    \[ rating = loss penalty(1000 + (\frac{2000}{pi} * atan(rawrating * gamenorm))) \]

Loss penalty is 1 if the players’ team wins and 0.96 if they lose. Game normalisation is applied so that numbers gained are accurate. This takes the score to win the game and divides it against the number of players per team. The numbers are then applied to the arc tan graph. The rest is to beautify the result. Perhaps a worked example of the system would help clarification.

This example will use these stats from the game: 4 players per team, 50 kills to win; the player achieved 21 kills, 7 deaths, 5 assists and the players’ team won the game. The rating would work out in this way:

    \[ Raw Rating = (21 + 5) - (7 * \frac{1}{3}) \]

    \[ Raw Rating = 23.66 \]

    \[ Rating = 1 * (1000 (\frac{2000}{pi} * atan(23.66 * \frac{4}{50})) \]

    \[ Rating = 1 * (1000 + (\frac{2000}{pi} * atan(1.8933)) \]

    \[ Rating = 1 * (1000 + (\frac{2000}{pi} * 1.0848683)) \]

    \[ Rating = 1690 \]

This rating would then go on to the players’ record and every time they played a game, their average rating would update to gain a picture of their skill level.