What exactly am I doing?
A good question, one that it seems several people have now asked me. The answer is, I'm doing quite a few things, and multi-tasking them. Of course this causes a problem in that it can appear to take much longer to get any visible results down, but I remain faithful. During my last year at uni I was tasked with making a simple multiplayer game, and only in the final two months before submission could you really see any evidence of the game itself. But once the first sign of life had emerged from the project it made huge progress in a short time. So I'm not yet worried that my Leadwerks projects are not really in any playable state. But people will be asking, "just what are these projects that you are working on?" I'll explain:
The first project, which currently gets most of my attention is a multiplayer arena style game, think Quake 3 but with different maps, powerups and weapons. The idea is that this game will provide a foundation to build a more complex FPS game. For the second one, think Mafia and GTA: Admittedly, more like Mafia than GTA, more of a linear story as is the case with the first mafia game (although the upcoming release of mafia 2 might provide some interesting inspirations). Should be quite an interesting project since I don't really know too much about that style of life. Hopefully it will provide some comical stereotypes, but so early on, it's too early to make such a promise. Those are the brief abstracts, more about the second game when the first is ready.
So, this Arena game of mine (or id software's, which may be more appropriate), what exactly is it going to involve? Well anyone who's played Quake 3 probably knows that deep down, the game is not actually that complicated. There are nine unique weapons which all have their own strengths and weaknesses. And the simple objective would be to score the most number of frags within a specified timeframe. During that time, you would decide which weapon is most suitable to use for that task at any given time, whilst making sure that you are strong enough to survive an attack from another like-minded player. Powerups occasionally appear in the arena to make your job a little bit easier, again, they all help you in their own way.
Well, I don't see too much change in any of those mechanics, but implementing those are some of the core elements of any shooter game, so getting them down once would make a larger-scale game much easier to develop, or at least that's the idea. The biggest difficulty is going to be controlling the players. I could not decide whether it would be easier to code the network side of the game first, or the single player bots, and each have their own set of challenges to the developer:
Networking involves:
Tracking the connections and disconnections
Handling the client input, and ensuring all other clients update the associated player model accordingly
Attempting to hide any network delays, because, best intentions in the world, problems do happen, and warping clients to old positions is annoying. More so when it happens frequently
Attempting to keep the client's view smooth. It may be great if you don't get warped around all the time, but try aiming at another player who is experiencing this problem. Also, keeping prediction reasonable. Attempting to remove any over-predictions, which cause many (visible) corrections to be made
And I'm sure there are more that I'll experience during development
Single player bots involve:
Knowing the arena, and where to stand. isn't is just silly if a bot walks somewhere it shouldn't (Like Q3's red mist, or the void of space). Sometimes the most direct route is not always the best, so this involves pathfinding in some way
Being able to 'think'. Walking around randomly may be enough to start out with, but really, wouldn't it be so much more interesting if the bot knew to run for some health when it was weak (instead of perhaps running to grab a railgun)?
Being able to 'lead-aim'. We all know that rocket launchers sterotypically do not hit instantly. To prevent their explosive blast being over powered, they take a while to reach the target. This allows an observant player to attempt evasive action. But the bot has to take this projectile speed into account as well, as simply firing where the target was is unlikely to work. For the case of grenade launcher, the influence of gravity must also be taken into consideration when using the weapon offensively (unless the bot chooses to use another weapon that is)
And possibly, if I really feel like it, attempting to predict the player's movement over somewhat long periods. Example: the bot has done a tremendous amount of damage to another player. It's likely that this other player will be going to the megahealth spawn, and praying it's there. Does this bot know a faster way there? Simply chasing will guarantee the player will get the mega health (if it's available), whereas taking a faster route may deny the player the health (and it's even possible that the bot can grab it instead). That's a difficult one, and so will be attempted much later.
Eventually, I decided I would go with the network side first. After all, at least then people could play the game with each other and have longer lasting fun that with poorly programmed bots. Also, the bot's play style could be influenced by watching people playing the game.
Building the bots will require a pathfinding system. I know most people here all seem to have taken a liking to A-star, but I won't be going for that, instead, think of a breadth-first search system, but with some minor changes, giving some features of a uniform cost search. When I've actually built this system, I will explain just how it works. All I will say is that unless I've really got something very badly wrong, it should -always- find the fastest path from start to destination. without being too slow, but of course, time will tell...
Closer to time, I may be asking for some media input from the community, models in particular. But I will not be asking for such input until the programming is close to finished, and will be using my own (sub-par) milkshape efforts until then.
Once the game is finally finished, I'll walkthrough exactly how I created the game so that others can have something to learn from if they're not quite sure how to build such a game. I'm now definately committed, this game will -not- be using 2.3 or newer. That does not mean that it would be of no use to read through the source code though. The mafia-like game will probably be an LE 3.0 game.
So like I said early on, there's no signs of life yet, but when screenshots come up, you may be surprised how quickly it all takes shape
9 Comments
Recommended Comments