Monday, 26 April 2010
Extra Things
Not actually a huge number of changes, but the creatures in the dungeon now actively - if unintelligently - chase the player. They also have attached (red!) lights. The player can create rolling fireball thingies, again with dynamic (yellow!) lights.
The fireballs started off inheriting the random motion and solidity of the mobs, but after tweaking they no longer collide with anything and just do damage to anything they touch. Failing an opposed position test also deals damage to non-identical factions now. Water deals damage to monsters and heals the player character. Lots of ickle tiny gameplay fiddles.
Ehm, yeah. Not much actual change.
Thursday, 22 April 2010
Not Worth A Screenshot
What's the significance of the arrows (ignore the inter-penetrating fungi)? That - right there - is some honest to goodness game logic! Green arrows are successful move actions, red ones are forced movement after failing an opposed test.
After months of being nothing but a rendering sandbox, there's actually a tiny bit of game in my game. Whoa.
Things to report so far:
- The
Ent
system is really good for quickly working on game logic, almost as good as a decent dynamically-typed language. Adding additional properties can happen anywhere, which makes for very quick iteration, and handling things asOption
s makes writing systems to use them robustly equally easy. Working on a plan to allow more rigid use as the systems evolve, to help keep them under control as they grow. - Actually resolving the world state to something reasonable is really quite hard. I was hoping to avoid the addition of a 'prone' state to allow entities to share a position, but that's not strictly possible in the general case (N+1 entities occupying N grid positions) and annoyingly opaque even when it is possible. Compromises ahoy!
- Must create new content. My re-use of the stupid "cave anemone" thing is bordering on the ridiculous now (the blue one is the player, by the way). Started sketching some monsters, and discovered that designing them such that they have a recognisable silhouette from directly above is... tricky. Maybe an orthographic three-quarters view would be better? Argh.
- Did I mention Scala's
for
construct is awesome? I think I did. It bears mentioning again.
Tuesday, 6 May 2008
I live!
Eh, long hiatus there. I'm trying to keep this more up to date than previous efforts, but... well, I'm easily distracted.
I'm still working on the Roguelike, but I'm marginally stumped as to the direction of the AI now. Although the planning prototype worked after a fashion, as soon as the number of planning actions started creeping higher the complexity and space requirements of the planner became silly, even without allowing for such simple things as predicted enemy moves or group interactions.
One option would be to severly limit the maximum plan length, to maybe four or five steps. This is adequate for most simple action chains, such as move to and pick up ammunition, reload weapon, fire at enemy
. As the number of actions grows, the plan length could be a limiting factor, and we still have on the order of 5N plans to consider.
Limiting the number of actions available to a given enemy would be very helpful. In some cases, this would make perfect sense. Less intelligent enemies will have a smaller set of actions available fairly naturally. For more seemingly intelligent AI, something artificial must be introduced... perhaps a core set of essential abilities, plus a random subset of all the advanced options would work.
There are some other issues with the design and implementation, of course. I need some motivation or inspiration. I think adding some pretties might help get me out of the code slump, although it's not useful in the grand scheme of things.
Current distractions
Recently I've been playing a load of Dungeons & Dragons Online. It's a strange game. It's nice being able to create varied characters, and develop them in strange and not necessarily optimal ways, whilst having some idea of how the mechanics and system work. I like D&D well enough that I can overlook the Eberron setting, which is merely broken. There are some hard choices that were made to adapt the game to realtime, online play, and on the whole I agree with a lot of them. On the other hand, Turbine have made massive strides to completely break certain aspects... the equipment is vastly out of whack with what 'should' crop up in a D&D game at equivalent levels, and the entirely synthesised-for-DDO enhancement system has some scary issues. Skills are vastly less useful in general, and there are few of them implemented. Prestige classes don't exist except as a few scattered enhancement tack-ons, which only works for a few PrCs anyway - namely those without interesting class features. All told, classes are far more pigeonholed, twinking is quite destructive and rampant, and monsters end up with vastly inflated health, saves and AC to try to keep up. At level 16 (the current cap) the average monster has on the order of 450 hitpoints, going up to a thousand or so on Elite. Very silly. And yet I keep coming back to it; possibly this is simply down to the lack of decent MMOs out there. Other than DDO, the only one that's held me for more than a few weeks have been WoW and Guild Wars. The latter because of overall superlative design and the former because... um... I don't know. I doubt anyone knows. I'm thankfully over that particular addiction though, for now at least. I'm not sure what GW would have to add to lure me back into regular play, but I'll be keeping one eye on it
Gothic 3 Has also been tempting me recently. The learning curvecliff is brutal, as is much else in the game. In particular, the combat has me thinking about some of its oddities. For those blissfully unschooled in the pain of close combat in Gothic 3, the most effective technique I've found so far is a kind of relentless assault. The main reason this is so effective is quite simple - whenever you take damage in combat, your attack is interrupted. The length of the interruption is approximately the same as the time between swings for most melee weapons. Essentially, if you get hit even once in close combat, it's frequently Game Over... but if you keep battering your opponenent, you force him (<aside>there are a dearth of females in the Gothic universe, especially this installment, and most especially female combatants are notable by their complete absence</aside>) perpetually off balance and are pretty much assured victory. Against intelligent foes with weapons, it's possible to mix up the attacks with defense and some marginally complex attacking, but against most animals the only way to not die is to keep hacking and not allow them time to recover. This death spiral effect means that:
- Multiple opponents are to be feared. Although as part of your attack you actually force your opponent back (and move forward yourself), it's quite possible for an enemy to sneak behind the arc of your swings and hit you from behind. Once knocked off kilter, everything moves in from the kill and it's time to reload. Three goblins can be a lot more scary than a single elite orc warrior, even way past the time such creatures become 'trash' to be steamrollered in most games.
- Forcing opponents into corners/against walls is valuable. Especially animals that have no method of blocking, and so dodge backwards to try to evade blows. Being cornered is deadly.
- A group containing even a single archer is many times more effective. Arrows will mess up your attacks just as surely as a sword, and are very hard to avoid whilst in melee.
I'm still not very far into the game, but these are the things I've noticed so far. Combat's fairly visceral and terribly unforgiving. Whilst this almost binary combat does feel a bit too random to be entirely comfortable, it's definitely a different approach and adds a lot to the feel of the Gothic series. Combined with the distressingly long load times, and combat isn't something to be trivialised here. Despite many awkward and clunky features, not to mention the occasional annoying bug, I'm still enjoying it hugely for these reasons and the general feel of the game.
BioShock doesn't really warrant commenting on at this stage. The theme is lovely, although the linearity is a bit galling after so long in more open games.
Heroes of Might and Magic V has some niceness. I think the 3D adds considerably to the charm of the game world, although the camera is a PITA in the world/adventure map it rarely needs to be fiddled with. Turn based combat is wonderous!
Thursday, 8 March 2007
Progress! Of a sort...
Given that the major view point is always going to be top-down, I figure the z-pass stencil shadow algorithm is a win, and indeed it seems to work well even on my feeble home PC.
My current problem is the combination of line-of-sight with stencil shadows, and whether an ambient pass makes sense. On the one hand, the shadows accurately represent the area of the dungeon visible from the character's position, and most especially obscure creatures or items lurking out of sight. On the other, the player can see more of the dungeon from his or her elevated viewpoint, and simply not rendering the areas of the dungeon the character cannot see leads to unnatural pitch black shadows, and this makes navigation a little harder by obfuscating useful landmarks or features.
Given that traditional tilewise LOS will need to be implemented for gameplay purposes, I think a combination of hiding monsters based on traditional LOS methods, and using an ambient pass to hint at the structure of the dungeon not directly visible should work well. Now I just need a few monsters and a player avatar to test my suspicions with...
Guess that means I should get back to Blender. Sigh.
.jpg)
Thursday, 1 March 2007
The stage is set...
Let's set the tone; this will (hopefully) track the course of my attempts at writing home-grown games. As a professional codemonkey, sometimes the very last thing I want to do of an evening is stare at an IDE and write yet more code, so I'm thinking this will be sporadically updated.
Still, the goad of updating this journal may help push along development of ideas when the going gets rough. Writing code to do shiny things is easy... finishing even a little pet game is stupidly hard. There's so much to do that is painful, or dull, or otherwise requires more commitment than can be scavenged from the damp recesses of my soul.
My current, hopefully not-doomed project is a simple 3D Roguelike. For a quick rundown of the Roguelike concept and some common elements, Wikipedia is helpful as always. Mine own effort is intended to have traditional 2D movement and such, but representing the world with 3D eyecandy. The hope is to end up with a visually rich and immersive environment for the same kind of thoughtful play evoked by a good Roguelike.
Other games have done similar shiny things to the Roguelike formula. Diablo (and all its offspring, legitimate and by-blows both) springs to mind, with a special mention to Fate as I played it relatively recently. These sacrifice a lot of the complexity of the originals in updating the gameplay to be real-time, with an interface suitable for the quick reactions required by such. And very fun they are, but I miss turn-based combat occasionally.
Anyway, the high-level design is rough, and for the moment I'm focusing on getting the base technology up and running; I'd like to get the crucial elements affording roguelike gameplay implemented using 3D elements rather than a flat ASCII map and see where that leads.
For completeness, a small screenshot of the progress so far. Not much, but its only been in development for a few days... and no asset pipeline means nasty test meshes and textures. You can just about make out the solid black 'shadows' showing the field of view.