Thursday 29 October 2009

Progress

Time seems to be moving very fast lately. I have been practising my MIPS assembly in console development and I was thrilled to hear that in two weeks time we will be putting all our hard work into practice on the PSP development kits.
In Games Development techniques my game is coming along nicely, I have a mini game in place in my level where you must collect mushroom in the forest on my map.

In Introduction to 3D I have written a camera class and a rendering pipeline and my program now renders 3D wire frames of .md2 files. I felt this was a large achievement and I put a lot of time and effort into the program to get it to this point.

Monday 19 October 2009

Enter The Matrix


In Introduction to 3D graphics programming last week I was playing with the matrix. Ok, so its not as fun as it sounds. A matrix is a array of numbers used in maths to denote objects or transformations.
Last Tuesday I programmed a matrix class that will be used in my 3D rendering program. It is built to use 4 dimensional matrices. As the third dimension is perpendicular to the second , the forth dimension is perpendicular to the third.
Here is a two dimensional representation of a 4 dimensional object, the so called "Hypercube".

In graphics programming you use matrices called "Transformation" matrices to move and change the shape and size of 3D objects.
This week we will be learning about the virtual camera, the way you view the 3D world and the way it is represented as a 2 dimensional image on your screen.

Friday 16 October 2009

Project Managed



For Game Development Technique this week I managed a 22 person project to recreate "The Hive from the first resident evil film. To manage the team I split them into 5 groups and assigned a group leader for each group. In a meeting at the start of the project we then split The Hive into 5 main sections and then those sections were to be split up and distributed between the group members. We had several meetings over the week and a wiki was created so we could share ideas and resources. To get the final deliverable me and a few of the more hardcore members of the team spent a day in labs making sure everyone's levels worked and fit together.
I presented the final project to John Sear, course leader, this morning with the team looking on. It was a exciting moment because very few members of the team had seen the map all put together.
The project was a success and John seemed to have nothing but praise for the people who put the most work in.
In my time as project manager I learnt a huge amount. The first thing I found out is that lectures are right to not add their students on Facebook. It is fairly discouraging when you set a meeting for 9am and you see people on Facebook saying things like "I'm not going into uni on may day off at 9am!". I feel like I have also gained a grasp of who on the module will succeed and who will fail based on their attitude to work. While most people on the team pulled their weight and offered to help me in any way they could (including going to buy me lunch when I was hungry and busy working) others I had to constantly chase up and pester to get anything out of them at all.
While the week was hard work I do feel enriched by the activity and I am very proud of the team.

Here are some of my favourite parts of the level.


Monday 12 October 2009

MIPS



In console development we are going to program in assembly language so that our code is optimal. As you may or may not know, there is not one standard assembly language, what language you use depends on the processor of the hardware you are using. In the last lecture I took apart a PlayStation 2 so, as research, I disassembled a PlayStation 2 rom to take a look at the code.

It turns out that PS2 assembly is "MIPS" assembly. I was pleased to hear this as this is the same assembly used to program on the PSP that I will be developing for soon. I read up on a few basic MIPS commands, brushed up on my binary and hexadecimal number systems and had a quick look at some of my A level computing work to do with assembly.

The game I chose to disassemble was "Naruto Uzumaki Chronicles 2". I took a look at the first few lines of code and annotated them to show the command used.

Srlv zero, zero, zero <-- Shift Word Right Logical Variable

subu s6, zero, v0 <-- Subtract Unsigned Word

Mfhi zero <-- mfhi moves the contents of the hi register to register rd.

tge zero, a0 (19e) <-- Trap if Greater or Equal

(dmultu) zero, zero <-- Doubleword Multiply Unsigned

dsrav at, a0, zero <-- Doubleword Shift Right Arithmetic variable

break (00400) <-- Breakpoint

While each line on its own is very easy to understand, looking at the large amount of assembly was fairly daunting. I am looking forward to using assembly. Hopefully it will not be too long before this becomes fully readable for what it is.
Looking forward to developing for one of these.

Sunday 11 October 2009

Week Two




Week two of the year has come and gone, but what have I gained from it?
In Introduction to 3D graphics programming we had a mini test on vectors to make sure we were up to date and then we programmed our own vector class. We tested this class a large amount because it is fundamental to our final task to make 3D model renderer.
Next week we will be doing the same only for a matrix class. I have been reading up on matrices and am fairly confident that I will be able to program this class with few problems.
For console development I have been revising my number systems (Hex, Octal, Binary), I have also been reading up on machine code and having a read of some.
Games Development Technique has featured highly in my week. This week we had a lecture about games engines and middleware. The most interesting bit for me was the story of Renderware.

The work we got set was a team exercise as a class. We would have to build a unreal level as a class. The choice of what we were making was up to us. After a sizable talk I ended up backing the idea of "The Hive" from the Resident Evil film. As the main backer of this idea I was make Project Manager for the class. 10% of the modules mark is on this project so it is a fairly scary concept that I am in charge of it. More info about that project can be found on its wiki.

I still have a lot of work to do for all modules so I better get cracking.

Saturday 3 October 2009

First week of lectures of the second year


Well its Saturday and it has been a fairly interesting week. In Introduction to 3D programming we started working with GDI+ to program windows application with graphics. Off the back of this I have been making a paint application.
In Console Development we took apart some console to have a look at the hardware. My group took apart a PlayStation 2.
This was a fun activity and looking around the room at past consoles ranging from the Sega Megadrive to the Jaguar it was interesting to see the technological advancement from the different generations.
The other big lecture this week was Games Development Technique. In this lecture the course leader, John Sear, drilled it into us how important putting all our effort into this year will be. There are approximately 10,000 jobs in the UK games industry and only about 6,000 of those are programming jobs. In this academic year there are roughly 10,000 students studying games related courses. It doesn't take a genius to work out how competitive getting a graduate job will be. John estimates there there are about 40 undergraduate placement spaces in the UK, about 20 of those are from Derby.
The rest of the lecture was about project management. We learnt about the important decisions that the project manager must make when developing a game. This diagram below graphically shows the decision a producer must make when starting the development of a game.
If you make the game fast the cost will go up and the game will not be as good but if you make a game cheaper then there is a larger amount of time that your company is not gaining any money from the project. As a programmer I want to make the best games possible, the problem comes when I am part of a large company and the bottom line is that the company is there to make money and paying 200 programmers for 10 years to make the best game ever is not economically possible for very many people.
With all this project planning talk I made a spreadsheet with a schedule for my games development technique project as seen in the picture at the top of this article.

Back to work for me, I should have a new portfolio website up soon so watch this space. Also note that you can now get to the blog from www.ajongamesdev.co.uk.