One thing that annoys me a lot are "software exams", where you can become a certified drone of the particular software company, typically Sage or Microsoft. They are a two-pronged attack by the software company on free software, gaining them money (because you have to pay to take their exam) and locks you into their software, since you are more likely to stay with software that you have spent money and time learning.
But they also have ridiculous questions! One of the Sage exams has the question "What is the maximum number of lines you can have on an invoice?" What?? So Sage has decided (either due to their inability to write software that allows as many invoice lines as possible, or their marketing dept. decided that it looked good in a brochure) that you can only have 99 lines on an invoice. And people have to memorise this (and a myriad of other completely pointless facts) in order to pass an exam.
Excuse me if I'm not impressed with anyone who's been stupid enough to take this exam.
The trials and tribulations of an amateur game programmer. Please tell him where he is going wrong.
Wednesday, October 31, 2007
Monday, October 29, 2007
Off Lisp
I don't see why Lisp is so great. I wrote a "random movie star selector", and it came up with Tom Cruise.
Thursday, October 25, 2007
Shadowfire Remake
Shadowfire is a classic Spectrum game from 1985, and I'm always surprised that no-one has remade this, since it seems perfect to me. The original game had some great ideas, plot and gameplay, but was limited by the platform. Some modern graphics would enhance it no end.
So I've taken it upon myself to do the remake, which is located here.
I've given it an RTS-style interface. It's still unfinished; at the moment you can walk around, teleport your team in, and shoot the enemies. It currently uses sprites from the original game, which weren't designed to be used in a top-down game, so if anyone could provide me with new sprites that would be good. I've got the code to rotate them to all 8 directions, so you only need to draw one copy of each!
So I've taken it upon myself to do the remake, which is located here.
I've given it an RTS-style interface. It's still unfinished; at the moment you can walk around, teleport your team in, and shoot the enemies. It currently uses sprites from the original game, which weren't designed to be used in a top-down game, so if anyone could provide me with new sprites that would be good. I've got the code to rotate them to all 8 directions, so you only need to draw one copy of each!
Tuesday, October 23, 2007
Java Threads
Unfortunately, one of the (few :) ) drawbacks of Java applets is that in order to have a consistent game loop, you need to run the main game code in another thread. (I may be wrong here; please let me know if I am). I've blogged before about why threads in any language are a pain as they exponentially complicate a program, not least because variables can change mid-line.
Another problem that I always forget, is that in Java, threads don't access another threads data directly (unless you use the volatile keyword). Forgetting this caused me several hours of frustration and I even wrote my own ArrayList class to try and fix it. Basically, the code in my thread's run() function was accessing the class-level arraylist. But completely failing to affect it! It was calling "arraylist.remove(13)" (say), but after it had run, that object still existed in the list! What was going wrong?!?
Well, I've already said the answer. It was accessing a copy of the arraylist, not the list itself. As soon as I discovered and fixed this, all was well and I could go back to enjoying writing applets again.
Another problem that I always forget, is that in Java, threads don't access another threads data directly (unless you use the volatile keyword). Forgetting this caused me several hours of frustration and I even wrote my own ArrayList class to try and fix it. Basically, the code in my thread's run() function was accessing the class-level arraylist. But completely failing to affect it! It was calling "arraylist.remove(13)" (say), but after it had run, that object still existed in the list! What was going wrong?!?
Well, I've already said the answer. It was accessing a copy of the arraylist, not the list itself. As soon as I discovered and fixed this, all was well and I could go back to enjoying writing applets again.
Wednesday, October 10, 2007
An RTS that I intend to be a 2D version of World in Conflict
I mentioned this a while back, and against my own advice I've come back to it. Actually, I've already written most of the difficult framework stuff of selecting units, moving them around, A* pathfinding stuff etc.., and just have the fun of adding a proper "game" and features (- classic assumption by programmers that the final stuff is fun/easy). The screenshot is below, and the game itself is here (or it will be by this evening).
I've nicked the graphics from Advance Wars, and although I've never played World in Conflict, I always think it's a good idea to try and copy a game, as it gives you (me) inspiration and something to aspire to. And if I do anything differently, then great, it makes my game slightly more original!
I used to do this a lot back in my Spectrum BASIC programming days - I've written versions of Carrier Command and Populous, among other games, in BASIC using UDG's (remember those?). It used to be pretty easy. Looked awful, mind.
I've nicked the graphics from Advance Wars, and although I've never played World in Conflict, I always think it's a good idea to try and copy a game, as it gives you (me) inspiration and something to aspire to. And if I do anything differently, then great, it makes my game slightly more original!
I used to do this a lot back in my Spectrum BASIC programming days - I've written versions of Carrier Command and Populous, among other games, in BASIC using UDG's (remember those?). It used to be pretty easy. Looked awful, mind.
Tuesday, October 09, 2007
Games Blamed for Society's Problems (again)
People have really got it in for games today!
* Manhunt 2 has been banned (for the second time). (Notice that despite the headline and parent's insistence, police said there was no evidence his killer was inspired by the first game). The Government has decreed that I can watch films like Saw and Hostel, but I am not allowed to play Manhunt 2.
* A Games violence study is launched. Despite the fact that there are far more violent films, books, comics etc., it seems that games are the favourite target for blaming as the cause of crimes and bad behaviour. Didn't we have crime before games started getting "realistic"?
* Manhunt 2 has been banned (for the second time). (Notice that despite the headline and parent's insistence, police said there was no evidence his killer was inspired by the first game). The Government has decreed that I can watch films like Saw and Hostel, but I am not allowed to play Manhunt 2.
* A Games violence study is launched. Despite the fact that there are far more violent films, books, comics etc., it seems that games are the favourite target for blaming as the cause of crimes and bad behaviour. Didn't we have crime before games started getting "realistic"?
Monday, October 08, 2007
Ignoring my own Advice
After deciding to stop writing overly complex games that take up too much of my time and I end up abandoning before I finish them, I suddenly found myself writing an RTS that I intended to be a 2D version of World in Conflict! Arrg! Note to self: Stop!!
To compensate, I decided to write my own version of the highly addictive game Gimme Some Friction. It took me about two hours, and the results are playable here straight away thanks to applet-technology.
Phew! A finished game that's fun! Whatever next? An original game? We'll see...
To compensate, I decided to write my own version of the highly addictive game Gimme Some Friction. It took me about two hours, and the results are playable here straight away thanks to applet-technology.
Phew! A finished game that's fun! Whatever next? An original game? We'll see...
Subscribe to:
Posts (Atom)