Archive for June, 2008
So the Internet is on fire because Blizzard has finally announced Diablo III
Go check out the gameplay videos, it looks quite impressive. I’m looking forward to multiplayer.
No announcement of a new Diablo game goes without a look back at the games that Diablo descends from – Rogue and Nethack in particular. The discussions have already begun, is Diablo even a Roguelike? Is it just a click-fest with great eye candy? Is Nethack a better game because of the depth and strategy involved?
I’m not really interested in debating the point, it’s obvious that even though Nethack and Diablo have a common ancestory they have diverged enough to the point where they’re completely different games.
As I’m working on a new roguelike game myself – I thought I’d share how I think permadeath should work in roguelikes.
Make it optional!
It’s that simple really. A normal mode, and a hardcore mode.
In normal mode a single save anywhere is allowed and when you die you are automatically resurrected in the closest town with a xp loss penalty and all gold on hand is lost* No big deal, a small set back but you can still recover and death still has a penalty.
In hardcore mode, a single save is also allowed (to allow you to restore games still in progress) but when you die thats it, game over. No resurrection and no restoring the save.
Seperate highscore tables will be kept for each game mode.
Let the players choose how they want to play the game. That’s also why I’ll be implementing difficulty levels. Let the player choose the right challenge for them, you’ll end up with a better game in the end.
*A bank or vault will be avalible to store gear in all the major towns.
I’ve been spending the afternoon with SFML or Simple and Fast Multimedia Library
It’s a 2D Graphics API for C++ and It’s pretty minimalist, but comes with just the right amount of features for me to build a game framework with. It has almost all of my requirements for a good 2D library including; events (and polling), scaling, rotation, hardware accelerated blending, text rendering, cameras (to zoom and pan the entire scene) and even pixel shaders -Which I probably won’t use for compatibility with older hardware.
Aparently the Mac port is a little behind at the moment, but should hopefully be ready soon.
So far I’ve got some sprites on the screen with some rotation, blending and scaling going on. I’m going to start building the GUI framework soon, incorporating some of the ideas I learnt during the development of Caverns of Underkeep – I’m also going to download and play some more “casual” games, as they often have quite interesting and featureful GUIs.
To think, I’m probably almost a grown-up. I’m pretty tired after having my last three exams over three consecutive days. If anyone has any leads for a new graduate with a BA/BSc in Math and Compsci who would like to work in the .Net space, let me know
On a side note, I’ve realised that I’ve got quite a few games on my shelf that I haven’t got around to playing and/or finishing yet including – Civ IV, Curse of Monkey Island, Sam and Max Hit the Road, Baulders Gate I and II and Medieval Total War. As I am now officially a no-jobber, I think I have enough distractions to help pass the time.
One week til my first exam!
Heads down, Tails up.
See you on the flipside
If my last games were written in Java, why am I using C++ for my new Roguelike?
Countless religious wars are fought over programming languages, just look at any forums frequented by programmers.
I’d like to think that I’m pragmatic in my technology choices – Languages aren’t often better or worse, but in many cases some are simply more suitable than others. Caverns of Underkeep and Attack of the Meeplings were written in Java because I wanted to have a go at making browser based games and I decided that Java was the best technology for the job. Incedentally I think Flash would have been better in order to leverage in-game advertising – I guess sometimes business decisions need to trump technology ones.
The main reason for choosing C++ is that it compiles to native code on both PC and Mac, there are lots of external libraries for common tasks and it has a mature IDE (Visual Studio) and debugging tools.
The native code argument isn’t because of speed. On modern CPUs for 2D games the speed difference between running on a VM and running natively just isn’t human noticeable. But native code does ensure that all libraries are linked and deployed with the game. While I would love to have the expressive power of LINQ for my game, I really don’t want to require the user to download the .net 3.5 framework.
You ‘d think the Java runtimes would be more widespread than they are. I just bought a new laptop recently and it didn’t have any kind of Java VM pre-installed at all. And when you’re the little guy you want to put as little as possible in-between a potential customer and them buying the game.
And then there is the simple fact that being multi-lingual can improve your programming skills in more ways that just adding another technology to your resume, you get the benefits of seeing the world from a different perspective.
If I was deploying on CD or writing business software, or a designing a web application it might be a different story. But I guess C++ is the choice for now.
Today I had my last lecture and handed in my last assignment ever.
Tonight I will kick back and relax – Go see my old band, catch up with friends and unwind.
Tomorrow, I will start studying for my final exams.
In less than three weeks, it’ll all be over.
I’ve got final exams looming over my head like storm clouds on the horizon. But in between exam revision procrastination I’ve been thinking a bit about Tiny Frog Software’s next project.
Its going to be a roguelike game – Similar to Caverns of Underkeep but this time it’s going to be a downloadable title. Running the game on the desktop alows me to do alot of things that weren’t really practical in COU (like saves and game mods) I’ll be doing a free demo/pay for the full version type thing. And I’ll be targeting the Windows and MacOS platforms.
COU was written in Java, but I’ve decided to write this new project in C++ – Unfortunatly what’s really powerful about Java (and .Net) is that they provide a large framework for many common application tasks. When you go back to C++ you either have to write that functionality yourself or use external libraries.
Heres a list of tasks I need to be handled on my solution stack.
- Graphics / 2D / Hardware Accelerated : Simple and Fast Multimedia Library
- GUI / Game State Manager : Will develop in house as part of the framework
- Music and SFX : Bass (Licence Required €100 per platform)
- Scripting Language : LUA
- Internet Connectivity Library : Possible Solution – LibCurl
Getting this core framework togeather, operating and tested on Windows/MacOS will need to be done before building the actual application layer which will use all this nice stuff. It’ll probably be near the end of the year before my 2D game framework will be fully functional. That also gives me enough time to save money to contract out some art and music resources.