Over the past week and a half I've been working on Combat Systems although I've been involved with the design elements for the past two months. Today I finished the ground work and over the last hour began implementing test weaponry. A semi-auto pistol that I already had as a test of the system, a pump-action shotgun, machine-pistol and a semi-auto/burst-fire rifle. It's exciting because each of these involved adding new code to support the fire mode but the majority is running from the systems already in place. At twenty minutes to add a new fire mode and create a test weapon to demonstrate it I like to think it works okay. It's just nice to see the culmination of a few months work come together.
Other than that BBC Radio 1 have taken over Dundee for the weekend so I'm going to avoid the city centre as much as humanly possible.
It's looking most lovely, lots of concept art on show if you like that sort of thing.
Edit: I just spent the last 45 minutes playing our E3 build of our other project Crackdown. Look out for it, much, much, much fun! It's the first time I've played it since I joined Realtime and its very exciting to see it coming to fruit.
Well my second dual core work machine has arrived and I now have everything nicely linked together using Synergy. Still in the midst of setting it up the way I want but it should really make network tests (about 90% of the testing I do for my development) easier. Running four clients and the server on one machine was no fun at all.
Yeah so I've been a touch lax with updating my journal lately. Work's been super busy finishing up the deiverables for our latest milestone, no overtime as yet but I'm sure that will come this quarter as we hot up on pre-production.
So new things:
- Got a new laptop so I have connectivity at home again! This is partly why I should be posting a little more regularly again. It's nothing special but should suit my needs well.
- Passed my three month appraisal without any major problems and even some praise for my ability to pick up the intricacies of the Unreal Engine.
So work wise what have I been up to? Pretty much continuing with requirements documentation for a variety of systems including combat and vehicles. I'm not used to having to think about systems in abstract terms so it's been pretty tricky to come up with requirements when my brain is geared towards providing solutions. It's a good practice though as you pick up things you missed and generally come up with more suitable ideas as part of the process.
Other than that I've been involved in some cross-discipline working groups essentially nailing down the design and identifying any areas that could cause trouble. This is particularly good as it gives more exposure to everyone involved about the entire project. In short it brings ideas along fast.
We are about to enter another new area of development for me as we now have a Gameplay Lead. With someone who has time to give the group some direction we are beginning a phase of 'agile' development to expose some of the core gameplay components. This should hopefully be more engaging than the endless document writing as well as showing us where we need to go in terms of design. We expect to be refactoring some of what we produce and just stubbing out a lot of the rest of it for future use. Hopefully none of the code will be throw away so here begins the proper development of the final product. Only a couple of years to go!
In other news our companies other game Crackdown should be showing at E3 this year so keep an eye out for it as it looks something special. The GFX guys finally got the full vistas into the game and blimey does it look good.
Life wise I'm ticking along, looking at a car to buy in the summer now my work is more secure. I'm back writing schlocky zombie fiction and getting enthusiasm to start a project in my own time. Not a clue what yet though!
Although I'm single for the second one running. :)
Been a while since I last updated but there isn't really much more to add. I've been fiddling around with the various aspects of the UE3 Engine you'd expect as a Gameplay Programmer and have got a lot out of looking at the guts of a very complete commercial engine. Some of it I like, some of it I don't and all of it I'm pretty sure I can't talk about!
Other than that I'm really liking the way Real Time work, the emphasis on design before implementation is refreshing. We've also been recruiting like crazy so I'm no longer the 'new guy' by a long way.
EDK Eric asked me for some advice on mobile games programming and in replying to him I decided this would make a much better entry in my journal that others can read. My experience of mobile programming is based on five-months working for a company called Caveman Arts creating mobile games and applications in J2ME for the international market.
These are essentially the things I picked up during that time.
1. As an Indie it's very, very hard to get money from above you in the chain, the smaller number of people in that chain the better. Until you start receiving money you will need a lot of investment!
2. Everything you do will be done for multiple handsets, made by multiple developers, with differing interpretations of the standards. In short anything that works on one handset will probably mess up another, even within the same manufacturer and handset family! Device fragmentation is one of the biggest problems facing a Mobile Developer. It isn't insurmountable though.
3. Mobile projects are short-term, the longest is likely to be 6-months and that will be for a big project! As such it is critical to have your tools setup and working before you begin. Including a robust and extensible way to manage a build chain and version control for source and assets. Hacking as you go will work but will leave you with an unwieldy mess that will be hard to take forward. Anyone coming to work on your code afterwards will not have a clue! Trust me, I had to do this daily!
4. The usual rules of development apply things like; design before you implement, profile as best you can before optimisation and don't take shortcuts unless you really, really have to!
5. Java might be an Object Oriented language but you won't be using those features! Every class added to a project adds 1k overhead to the overall JAR size. That's an awful lot of room when you have a 64k ceiling. As usual try and keep non-project specific code together (Math, persistent storage, etc.). Mobile development is most definitely it's own beast, the only way to prepare for it is to do it!
6. The Eclipse IDE is worth its weight in gold, personally I never used any of the MIDP/J2ME plug-ins for it. We stuck with a build chain based in Ant and used the Antenna extensions. Eclipse supports Ant natively and makes a complicated build chain easy to manage. Ant was primarily used to create build tasks for specifics to cope with device fragmentation, localisation and inclusion of specific assets. The other software used included MediaWiki for an internal documentation system and Subversion for asset and source control. Eclipse has some great plug-ins for Subversion.
7. Emulators are complete rubbish for the most part, they are useful for testing non-handset specific code such as game mechanics but there is no substitute for on device testing. On device debugging is even worse, in most cases you are limited to waiting for the device to fall over and hoping you know what went wrong! Error messages are non-existent. The exception to this is Sony Ericsson who support on device debugging, absolutely light-years ahead of anyone else. Back to the emulators and printf debugging for all the others! Bigger headaches include memory management (yes, in Java!) and sound playback. The use of a pre-processor such as the one packaged with Antenna allows device specific work-arounds.
8. Back to device fragmentation, the devil! There is plenty of help out there either in pre-bought solutions such as J2ME Polish or by creating your own build solution. J2ME Polish holds a nice device database and other sites also contain information on device specific issues. The best place to start is the manufacturers Knowledge Base but for the most part these are obtuse and the information you most want is often buried. Other fragmentation issues include localisation (to eastern as well as western languages) and asset management. Mobile phones have an eclectic mix of screen dimensions to cater for and you can often get a better deal with a publisher or distributor by including some adverts. You don't want to be doing this by hand!
9. Sign up on J2ME.org it has a wealth of talented amateurs and professionals.
10. Have fun. I did, working in a small team at a start-up is unlike anything else.
Still sat here on a friends machine twiddling my thumbs until I start work again. I'm heading back to my folks for Christmas on Thursday, back to home cooking (thats not my own) and a few days without chores! Christmas for me involves heading over to my Aunt's place, she usually puts on a really good spread and then its shooting on boxing day. Generally its a great time that I really enjoy as I don't often get to see my family living at the other end of the country.
I'll be back up in Dundee for new years though, probably head to a couple of bars with friends then back to my house. I seem to be getting old as clubs just aren't appealing anymore, either that or I'm just jaded from the slight overdose of them I had whilst at Uni. Anyway a few drinks in a bar are much more fun than listening to pounding music with a load of moronically drunk people.
Other than that I'm trying to come up with ideas for projects to do in my own time. Currently I'm thinking away from games programming and towards doing a little writing. I write a little better than I do in this journal, at least I think I can! :o
So got back in contact with EA today, who have apparently been trying to get hold of me for a while. Left my mobile in Bristol so haven't been getting calls! Why they never e-mailed is unclear.
I explained my reasons and apparently I'm the first person the HR girl ever had decline! Weird, she also said I'm the only person that listed on of the reasons for declining as 'walking to work'. But to me it makes financial sense not having to buy a car, run a car, insure a car etc. etc. That probably doesn't make a lot of sense to the Americans hereabouts, unless they live in a city centre. I literally have all the amenities I need within 20 minutes walk, the flight back to Bristol is a two hour train/bus ride and a 40 minute flight. If I book early enough that would cost me about 1/3 of a one-way trip by car!
So I got offers back from Realtime and EA. EA are offering more money and a relocation bonus but are based in possibly the most expensive area of the UK to live in! Realtime on the other hand are offering a competitive salary and I live fifteen minutes walk from the offices in an awesome flat. Also Dundee is full of my friends, thus it was a slight no brainer. I'll be starting work with Realtime Worlds working on their MMORPG project, APB, as a Software Engineer on the 5th of January. The real issue is money NOW! Borrowing from my parents is both good and bad. Good because they offer much better rates than banks. Bad because I've been pretty independant since I moved away.
So that takes the edge off the stress anyway. Although it will be interesting moving from a company of five people making mobile games to a company of 130 working on next-gen console and PC titles. :D
On another note I've been spending my days re-reading Effective C++ and through the Game Programming Gems series'. All good stuff.
Caveman Arts went under at the end of October. It was rather sad, especially as the owners Mike and Ev had worked so hard on it for quite a while. So for the past few months I've been job hunting.
Five months experience isn't enough to get me over the 'Graduate' hump but crucially it is five months my friends have been working in industry. The old adage of "it's not what you know but who you know" still applies to the Games Industry and so relatively quickly I lined up three prospective employers, Realtime Worlds, based in Dundee, where I live. EA, firstly in Guildford at the Criterion studios and then a second interview at their Chertsey HQ. Blade Interactive, who are based in Manchester and I probably won't see.
In my experience interviews are pretty fun, although massively draining afterwards. EA in particular are bad, my first interview, including a programming test took four hours on top of the three hour drive there and a four hour drive home (really thick fog on the way back). The second actually took longer as it started earlier, so I left through rush hour traffic and went home through the same! Although the interview portion only lasted about three hours that time.
Will update a bit more frequently as things progress.
So I've not updated this thing in a while and since friday has rolled around I thought I might take some time to tap out an update.
I've finally got a flat sorted out and paid the deposit and rest of the rent for this month so that's one major life stress sorted out. I'll be sharing with two other games programmers, Ben and Martin, (from Realtime Worlds and 4J Studios respectively and one of the artists, Lee, I work with at Caveman. It's a brand new, really well decorated townhouse so it makes an awesome change to some of the nastier places I lived in as a student. We move in next week so it will be a relief to get off of Bob's floor!
Other than that we have seen one of our games Jetski Champion rolled out to some Asian companies and we are about to put it up on Click Gamer also. Our new title Sub-Zero Racer is pretty much complete and ready to ship out. Piccies below:
Whilst they both look similar and are based on the same core tech they both play remarkably differently which is ace. Work has already started on our next, unannounced title so off we go again.
Our biggest challanges of late have again been caused by damn Motorolas and thier poor garbage collection and general handling of memory. It's pretty damn hard to avoid colossal fragmentation and makes me yearn for the ability to handle your own memory management strategy! Thankfully my bluetooth dongle won't work with the motorolas so our other coder has taken the brunt of trying to organise resource loading in a way that means we don't kill the heap. Meanwhile I have been wrestling with our unholy AI system which seems determined to be non-deterministic. However the pain and frustration has lead through to a decent experience for the player.
So we woke up the next morning and peeled ourselves out of my brothers flat where we had been staying each in our own personal hangover hells. Following a stop for some life-saving coffee and a bacon roll we headed a little late into the conference.
We arrived towards the tail-end of a Q&A session of questions submitted the previous day by the audience. It was very entertaining and made me realise how grating some people are when you are hungover.
The remainder of the sessions remain a bit of a blur, mostly due to my hangover which only got worse as the day progressed. The highlights being a fairly decent session on character design. Followed by a history of machinima which was also pretty entertaining.
It was nice to meet up with all the people I went to Uni with who are now spread about the country. Interesting to see some other familiar faces from the past who are now working various jobs in industry and also to meet a load of new people.
Will I go next year? Probably but I think I might need a nice shirt to distinguish myself from the crowds of students. (damn my youthful goodlooks, eh?) [wink]
I spent the majority of today tweaking various bits of code and fixing bugs. Then added some advertising for a new distributor into one of our previous titles ready to be sold. Plus drank my bodyweight in coffee.
Well its the end of another Monday and today I've mostly again been fiddling around with back-end stuff. All of our current projects have been entered into the Subversion server now and I've written a load of documentation on the Wiki so people know what they are doing with it. I've now started to improve our build process by seperating phone definitions out of our build scripts. This way phone definitions don't need to be added into each projects build paths and can easily be extended and added to without breaking older projects. Which is nice.
So EIEF is getting on for being quite a while ago now, so I'll give a brief synopsis of Day One today and go over Day Two tomorrow.
The best thing about the event this year was much closer inclusion of the public into the actual DevConference. Both were held in the same building and as such I think a lot more Developers went to see the various screenings and had a look round the Go Play Games exhibition. Complete with Booth Girls this year. :D
The food and coffee was on par with last year being excellent. The aftershow venue was much nicer although they were rather stingy about what they were offering for free compared with the previous year (although that may of been something to do with our shot-glass pyramid the previous year).
Anyway, Day One began with a Keynote speech from Adam Singer who discussed his views of the games industry. For those who don't know Adam Singer, he has been CEO of various large media companies and is current CEO of MCPS amongst other things. He isn't directly involved in games so his coments were interesting to hear. Basically his gist was that games have a way to go before they could be considered a medium but were working along the right lines.
The next session was the most relevant to me and was a panel discussion on Mobile Gaming. Essentially it boiled down to people discussing the problems currently being faced, which was slightly disappointing because it really rehashed the problems we all know are there. Interesting if you don't deal with them day-to-day. The contraversial point came from the guy at Vodaphone who managed in nearly the same breath to say games weren't that important (true, since their main revenue source is calls/data transfer) but that they wanted to be the sole retail provider of games on their network. To me that seems very short sighted and that they might consider it more worthwhile to team up with publishers or other distributors who can provide a more dedicated solution whilst Vodaphone still recoop on the data transfer over their network. Still Vodaphone Live is probably the best offering from any of the main networks in the UK. Other topics discussed were device fragmentation (Nokia promising to improve), issues with the difficulty in using handsets to actually get at games and also the unfriendly way in which they are currently sold.
Consoles and Broadcasters went head-to-head in the next session as the spreading influence and divergence of consoles into other media fields was explored. Representatives of Bravo, Channel 4, SCEE and Microsoft basically ended up having a big love-in. There was some friendly banter about XBox Live and then everyone basically agreed that broadcasters would still continue to create content for whatever the prevailing medium of transmission happened to be. Following on was a panel session entitled ROFLMAO, essentially focusing on online and social gaming. Featuring a panel including the people behind Second Life and various other online games it mainly focussed on the interesting things people were doing online other than shooting each other. Sort of interesting in a dry dull way.
The final two sessions followed a break for coffee and muffins. These featured a panel session on handheld gaming and its future, which was essentially a chance for a Gizmondo rep to get laughed at roundly by Nintendo and SCEE. After that there was the usual end of day lighthearted bit of industry comedy provided this year in the format of Have I Got News For You. Thankfully Dominick Diamond wasn't here this year. It was about as funny as could of been expected. (Not Very).
That ended the first days sessions. We then proceeded to get a little tipsy at the aftershow party, ready to get up with raging hangovers the next morning...
Sorry guys (if anyone actually bothers following this!), I've basically spent the last week battling with Linux to get several useful things setup for the office. Bad excuse but I will (maybe) get something about EIEF up over the weekend.
So what did I setup, well after a bit of fiddling about I settled on installing Debian. The net_inst CD is pretty damn sweet and very easy to configure and install packages from. It also gives you a very basic configuration which for a server and Linux is ideal. Less is more and all that. After that a quick shufty through aptitude and Apache2, PHP4, MySQL, and Subversion were installed. A short bit of configuration later, wrestling with many bits of obtuse documentation and everything is working hunky dory. Now our little office has proper source control, its own development Wiki that seems to have taken a life of its own very quickly and for the future I intend to implement an automated build and testing system on the Linux box so that we can make builds and test them overnight. Duh!
Other than that its been pretty quiet except for a bit of design type stuff and the other coder having a cracking hangover today after partying a little too hard at the Dare to be Digital awards ceremony.
So we got a bug report about a previous game in which, as per the unwritten rules of bug reports, it didn't really explain much. Firstly they were missing which devices it occured on, not so bad if you are only working with one port, bit more of a pain when it ramps up quite steeply from there! Secondly they couldn't give us any information about how to reproduce the bug! At this stage I was still pretty happy because it is a bug we have previously found and fixed in the newer games that use similar tech.
So, onto applying the fix! It's a simple couple of lines of code to copy and paste into each device build (approx 10 ports) which was fine and then five seperate language ports are made for each device port (approx 50 different SKUs in total). Now in our current setup using the excellent Ant and Antenna this would be no problem at all as you can build all these seperate instances in one go by clicking the right target in Eclipse. The Ant makefile then grooves its way through like a short-order chef making a meal. Mixing and matching various bits to get the right result for each build. Aka a piece of cake. Alas this particular game predates our creation of this system and each build has to be made by hand. Result is a slightly cooked brain from doing something simple that requires careful concentration and a load of new builds ready to be sent off to the publisher.
Pics of FIM Motocross
Still it'll make the next four days I have off seem all the nicer. Quite looking forward to the Dev Conference as it features a couple of interesting sessions about Mobile Games as well as the rounded topics of discussion. I'll give a more complete review of it when I return from the event (hopefully with a few pictures). Suffice it to say the free bar at the aftershow was the highlight of last year but this year is all about the networking (darlink).
Flat hunting sucks, more over flat hunting in Dundee really sucks. Looking more likely I'll be having to move in with a friend who is starting work up here soon. It's not so bad but after spending the last few years living with people I'd quite like a space that was exclusively mine.
Today has been spent tidying up the menus further and adding one or two nice graphical effects to add a bit of polish to them. I've also gone through and identified the alterations that need to be made by the artists to several sprites and general graphics. It's nothing much and mostly involves resizing images so they are more sensibly sized for various device's screens.
Roll on Thursday and meeting up with a load of people I've not seen in a few months.
So no updates over the weekend, had a friends flat warming on the Saturday evening and wasn't able to do anything on Sunday. Never thought I'd say it but mornings after are getting worse and worse. Still this week will be rather good as I have thursday and friday off so that I can attend EIEF. I was there last year and it was a blast so hopefully it'll be as fun this year as well. Anyone else attending drop me a comment below or a PM.
On the coding front I've added a weather effect in, fixed a couple of niggling bugs and added support for 'rally' style single lap levels. All in all things are going smoothly at the moment.
The first game I've contributed too is pretty much complete once it's made public I'll post some screenshots. The one I'm currently working on is also nearly complete from a basic programming point of view but requires more assets to be created. Although there is talk of making some subtle changes to how the game is played which means we'll need to get to grips with the level editor.
Now we have our thinking hats on for future projects.
Still it's nice to have accomplished a lot this week.
So the garbage collection was added but killed performance on some phones but not others! So the garbage collection was shifted to somewhere somewhat less frequently called. Problem solved.
I again went through the menus and spotted more inconsistancies, sorted those out. Good news is the game portion is fine and dandy.
Other bad news seems that our splash screens are not well liked by certain Nokias and are causing problems when we try to run the game, ranging from bombing out to missing graphics. Nice! So on with the coding... after lunch.
Whilst I'd like to make this a bit more exciting than talking about in vague problems I don't think I should. I'm also doing no dev in my own time not having my machine up here at the moment so I can't talk about that or show pictures of it (obviously).
So if anyone has any suggestions of things to liven up this journal a bit go ahead and shoot them at me.
Anyway today I completed the last of the few small changes to the menu that needed doing to keep things consistent between screensizes. We then noticed that memory was leaking like a sieve within the menu which was odd as we weren't allocating any! Turns out the implementation on the model of phone we were using allocates whilst drawing and whilst it does lose the references to it the garbage collector is not run. Coming from a C++ background of generally being responsible for deallocating my own allocations it seems odd that the VM isn't periodically running the GC. Actually it does, just once the memory is full but not on all devices in the same family. Go figure. So the addition of some regular GC into the app has fixed that little problem.
Grrr at teh Java.
Made the AI steer the same as the players as well. Very swish.
So what have I achieved today then? Well all the collision data is in and working correctly. I've then spent the remainder of the day getting a head start on myself for porting the game to various handsets (things like screen size, sound etc.), identified the graphics that need to be done again in different sizes. All that really needs to be done is the fixing of a few menu bits that didn't scale very nicely and adding some levels in as and when they get designed. Then some testing on various handsets.
This morning has gone rather spiffingly, fnar. [wink]
Just added a few Sony Ericsson devices into the build file which lead me to have to implement a few preprocessed bits here and there to get it all running along smoothly. But it all seems to be working fine.