So many of you will know that when I graduated university I set up a ‘games’ company under the misguided thinking that I’d be okay going it alone without any knowledge of the industry whatsoever. I had a client and things looked pretty promising. Naturally it all went pear-shaped and I got terribly depressed for a good few months.
I’d like to thank Devi Ever for helping me realize that things could have gone a lot worse and it’s never the end of the world if they do. Devi made a few mistakes and she’s in a bad situation but she’s still fighting and making games – it made me realize how pitifully small my problems running a company had been. I think at the time with all the stress piling on top of me I thought it was the end of the world – but it’s never the end of the world even if you do make a mistake (except if that mistake is setting off a doomsday device… then it might be the end of the world and you probably shouldn’t have done it.)
I’ve also recently been doing a lot of client work sorting out other peoples issues in businesses larger than the one I tried to run. Apparently the kind of issues I’d experienced in my own time as a director are actually completely normal! I thought for a long time that I was only having problems because I wasn’t ready for them… but apparently it’s common to find that people just aren’t ready to deal with when things get messy. We’re all human and none of us really know exactly what is going on all the time – we all make mistakes!
I look back now at the mess I was in before Christmas and realize a few things:
- The company made no profit, but it also made no loss. It was practically as if it didn’t do anything in the first place.
- I spent most of Christmas worrying that I’d lost people as friends because of the business – they’re all still here today and I’m glad of that.
- Clients are always happy to take more than they are supposed to… it’s natural for people to get as much out of anything as they can.
I also feel that before I left university I hadn’t experienced nearly enough failure in my life: I found all my university exams and coursework easy – I breezed through my presidency at the anime society – I never really had anything go horribly wrong. I kinda needed something to kick me out of my complacency and make me realize that not everything is so straightforward.
I learnt so damn much when I was running my company and I would like to try again soon. I’m hoping this time I’ll stick to my guns and do what it is I do best: make interesting games and run hilarious game jams.
Today was my first day back at university! So it was time to start working once again on my Games Engines assignment. I’ve fixed a good couple of bugs today including an annoying little problem I had with the PhysX cloth occasionally becoming too still and therefore not updating with the rest of the scene – I tried adding a constant force to it… but it didn’t seem to work at all – then I found a really nifty little function:
That pretty much fixed one of the biggest problems I’ve been having without much fuss at all. Occam’s razor eat your heart out! So now the cloth ‘wakes up’ every frame and no longer stops working properly if left alone for too long. I’ve also changed the colours in the game and made the blocks explode into a shower of debris when the ball collides with them… just to make the game a little juicier.
Another important part of this assignment is the collection and analysis of user data. One of the ways I’ve decided to implement this is by getting the computer to do most of the work and record my data into several files at run-time. The first piece of data I’ve decided to record is the location of the ball in space… this allows me to see where players mostly die and where the ball travels most often. I played a single game and then made the data I collected into a graph… here are the results:
This graph could also be considered as a really dodgy version of a heat-map. I can see where the ball tends to be often by looking at the concentration of points in certain areas – this could be useful to see if players have trouble getting the ball to land on the bat in a certain place or (as the case above suggests…) where they have used a strategy to destroy blocks vertically without risk of angles interfering!
After a few hours of fiddling with sizes today I’ve finished texturing the character models for the crowd simulation. I’m using Oliver’s original textures as I want to focus on the body-shape changes and how they affect the visual variety right now. Next on my plate are the wonderfully time-consuming process of fixing all the normals… I’d lie if I said I was looking forward to that bit…
It’s not overly noticeable from the photo above as everyone is rather small, but there is most definitely an increase in the variety between the people in the original simulation and the new one! My hope is that I can run a test alongside the ones I have planned which uses extra textures… this will help me develop a conclusion as to whether the geometric variety is less important than the texture variety or not.
So I’ve not really blogged much about what my third year project is actually about, so I’ll do a little post now about it, and how things are developing so far.
My project’s title is “Towards Developing Character Visual Variety in a Crowd Simulation Program” and it’s pretty much that: Developing a way of generating varied characters in a crowd simulation!
When simulating crowds in virtual environments, specifically games – it is often the case that models will be re-used, lowering visual variety in the crowd. This project aims to address the problem of re-used models by developing a procedurally generation system in OpenGL to generate more varied character models. The project will then be evaluated using focus groups and a “spot the same models” activity similar to that of McDonnell et al. (2008).
So I’ve been working towards developing a method of generating characters in real-time based on manipulating a base character using several different visual variation techniques the main being:
- Mesh Deformation based on William Herbert Sheldon‘s Somatotype Theory.
- Randomly generated Heights and Widths.
- Randomly chosen Bodies and Heads.
- Randomly generated colour differences in certain areas of character models.
I’m working on Oliver Szymanezyk’s crowd simulation program that he is developing for his post-graduate research project. He’s been working on creating a more realistic crowd simulation in which members of the crowd interact with each other in groups and not just as individual entities:
I’ve been tasked with making the characters more visually varied in the scene. If you look at the video and then at my screenshot below you can notice the differences I’ve added in so far between the old version and my current implementation. Ignoring the texturing problems on the bodies of course… I’m working on editing the texturing soon – since I’ve added in all these new vertices to the body I’ve got to change the way the body reacts to texturing.
After a great deal of painful fiddling with OpenGL vertex arrays and raging over little buggy rendering issues, I’m finally getting somewhere with this final year project! I’ve got my model (mostly) finished, and I’m happy with the results – might do a few more edits before I sign off on it, but the models are looking a great deal more varied than they originally were.
I hope to have the models completed one-hundred percent by early January so then I can hit my deadline for starting the evaluation process of my project. Then I’ll get on the typing up of my final submission… I’ve got most of my notes collated together, it’s just a matter of pulling it all into one epically sized document!
Today I managed to get back into the computer labs to continue work on my PhysX assignment. The plan right now is to have about 90-100% of the implementation done before I leave for home on Thursday – when I get home I won’t be able to work on the code properly as I don’t have the right set up on my laptop. Today I implemented a scoring system now and physics feedback for when the ball hits a block. I’ve also added rotating motor joint objects on either side of the screen to enhance gameplay.
Tomorrow I hope to add in lives and an end-game mechanic. Then do some cool stuff to make the bricks explosively shatter everywhere when they’re hit. (Not sure how I’m going to implement that yet… probably with an array – but we’ll see how much time I have to do it!)
Each year I’ve been at the University Of Lincoln I’ve really looked forward to seeing the games made by the new first years. This year I wasn’t disappointed, there’s some real talent in that group, and I’m really looking forward to seeing them all progress through the year.
Each year the first years have been tested with the creation of a one-button game, here was my attempt. Below is 2011 video for the first year “One Button Game” challenge:
One game that really caught my eye this year (2012) was Alex Saye‘s “The Legend Of Groomp” a tower defence game, here is a basic description:
The Legend of Groomp is a simple tower defense game where you must defend against a horder of soldiers using up to nine different spells. Spells are cast by either tapping or holding the Space bar. To unlock spells, you must get experience by killing enemies. Stronger enemies give more experience!
My gosh is this game fun. It’s got a really clever take on the one button game genre, using taps and hold-downs of the space button to decide which power to use. The game itself is so juicy – spells feel incredibly good to use, even those at a low level. The spells the player can use also can chain together, for example the flame-thrower can be chained up with a push spell to set other enemies on fire!
One of my personal favourite spells is the lightning spell, as it makes enemies spasm wildly and forks across the map in a very cool way. I also love the way that catapults lob rocks at the castle, and then they bounce off under physics… hilariously killing their own men. There is so much to this game, which is especially impressive when you think that they only had two weeks to develop it from start to finish – it has a very high level of polish.
I highly recommend trying the game out it’s so good. Also it’s free to download and play… so what exactly are you waiting for?! Download it for Windows!
If you’re interested in playing some of the other games made for the 1st year game-maker challenges, check them out here:
Today I received my initial mark and feedback for the first Advanced Games Studies assignment, I got 79% which is a reasonably safe 1st. It also means I don’t have to work on sprint 2 to improve my grade, which gives me extra time on my dissertation, and I like extra time for everything!
I’ve also implemented some more stuff in my PhysX Games Engine assignment, there are now blocks that the ball destroys when it hits them, I’m pretty happy with it (The video below doesn’t show the ball reacting to the blocks, but it does now… trust me.) This coming week I hope to finish implementing some extra PhysX features like joints and convex objects in order to get a higher grade!
I’ve also hit 20,000 words in my novel, I should hopefully have a complete first draft by the end of December. I’ve had a look into getting it printed, 100 copies should cost around £300… which is steep but I can reclaim the costs if I sell the books for £5.00 each. Where I’m going to get the initial funds from I do not know, but hopefully I’ll have a job come summer to pay for it! I’ve also looked into releasing it for the Kindle, which could be a cool idea.
To quote my old history teacher Dr. Perry: “Happy days chums!”
Now for a well deserved drink in the nearby student pub!
After a little bit of coding and fiddling with rigid bodies and triggers – I’ve added in some rather nice-looking fireballs to Team 1’s game. They react nicely with the world and damage the slimes on collision… I can’t help but think it makes the slimes far less threatening – but that’s fine right now.
Here is a quick video showing off the implementation of fireball projectile weapons:
I love using PhysX, OpenGL and C++ so far! Today I messed around with cloth materials in it to see what I could do… and got some really nice stuff out of it.
clothDesc.globalPose.t = NxVec3(4,7,0);
clothDesc.thickness = 0.3;
clothDesc.flags |= NX_CLF_COLLISION_TWOWAY | NX_CLF_VISUALIZATION | NX_CLF_TEARABLE;
return (new MyCloth(scene, clothDesc, 8, 6.5, 0.25));
Over the next couple of weeks I’ll be starting work on my Games Engines assignment using PhysX: I’ve been tasked with creating physics based version of breakout, changing the game to suit a 3D environment, but keeping the basic idea of a ball breaking blocks. I have a couple of designs in mind, but I’ll leave them for another blog post once I have some sketches done!
I really want to use cloth in my game… not sure how I’ll incorporate it, but I love the way it moves and looks. Especially when NX_CLF_TEARABLE is enabled and the entire thing falls apart! The addition of wind and other forces to a cloth object are also really good-looking. Below are some screenshots from my tests earlier today:
I think from now on I’m going to add slimes to every game I make. They’re just so damn adorable! I’ve also added some sound effects for the background and the slime’s jumping action. The sound effect for the slime is one made by a good friend Louis Bartlett, who is looking to get into sound design – some top notch work!
Next thing to do: Get the player shooting projectiles at the enemies… simple enough!