Showing posts with label procedural death labryinth. Show all posts
Showing posts with label procedural death labryinth. Show all posts

Thursday, 26 February 2015

Swag Em Up

New project: Swag 'Em Up.

I had been umming and ahhing about what to do as my next project. I had toyed with the idea of another strategy game, albiet less niche hardcore and more casual, but fancied putting my skills to the test elsewhere with something a bit more fast and furious with an infinitely shorter development period. Hence the Swag 'Em Up was born.

 Boxxy placeholder with ribbon trails

Swag 'Em Up as a gameplay genre revolves around rushing about, blasting enemies, and unlocking items and collecting powerups and upgrades which form the swag question. Rogue-like or possibly rogue-lite seems a good basis for this as randomizing items, placement and enemies should lead to varied challenges and unique replayability with new unlockables being available dependant on how previous play-throughs went.

Initially I'd toyed with the idea of a top down view but immediately found it rather boring visually, so I switched to a rather high isometric view of around 70 degrees. This showed off models better and gave more depth to the scene. Here's a quick visual explanation of the differences.



After deciding on my camera system I created a screen relative movement system. When input says up and right, the player's avatar moves up and right relative to the camera/screen. This works especially well with gamepad controllers which can increment the rotation of the control stick.

I coded a new cooldown system for weapons and sprinting So that abilities take a few seconds to recharge. My thoughts for player abilities were thus, light attack with no cooldown, heavy attack, evade (in this case sprint) and special object use. I created a few new systems to allow for permanent upgrades as well as temporary time based ones and a whole experience gain and leveling system which adds health and regen bonuses. Originally I had considered a cash system alongside score and XP to buy unlockable items but instead have opted for trading experience for them. This method involves the player deciding whether they'd like to spend their hard earned experience on powerups or let it accumulate for leveling, which grants upgrades of it's own.

And here's a little demonstration of what I've got after a month of coding featuring our very own cube placeholders. Camera relative control system, light attack, heavy attack, evade, cooldowns, experience gathering and leveling.

 Now it turns out that there is a minor issue with the control system - it's bloody difficult to shoot at anything accurately. This is not really helped by being a placeholder cube with no obvious centre of facing. I might add some sort of laser aiming object to help alleviate this, or I might split movement and direction into two seperate states, like in a twin-stick shooter.

In the meantime, there it is, the start of my new project: "Action Rpg Mecha Musume Catgirl Rogue-like Swag 'Em Up".

Sunday, 16 March 2014

The 7 Day RogueLike Challenge 2014 - Post Mortem - Post Hangover

I sit here with a mug (Royal Denby no less!)  of green tea and citrus, the only chocolate biscuit I can find in the house (jaffa cake no less!) and a hangover ... reflecting on my entry for the 7DRL Challenge and ProceduralDeathJam

http://7drl.org/
http://proceduraldeathjam.com


I wanted a 3D isometric open world roaming brawler.
It might be quicker for me to list the things which went right over what went wrong ...

The isometric camera system was easy enough, mount it on the player and then set the player as the control object.

The control system was much more of a pain. My first attempt was somewhat of a broken mess and I eventually settled for a simpler and somewhat hacky script based solution - the sort of thing which I would avoid like the plague in a real game.

The stealth system is a bit of a broken mess. It was working fine but it looks like the last minute changes I made before uploading might have broken it. Fortunately I made sure that the player can outrun the Ai.

I had wanted the rooms to be made up of individual tiles and each tile to have a random shade which would then correspond to the stealth rating. This turned out to be horrific for performance, mainly due to the number of meshes (1600) being subdivided into 9 or more objects ( over 9000!) and I hadn't LODed anything to save time. This idea got cut and the new radius based function was created using the lights to give the player a visual reference.

I had wanted different coloured meshes to portray different environments ... but there was never the time to do this.

Combat works nicely, though I didn't have the time to add in impact effects and audio so player feedback on whether an hit has been landed on an enemy is missing. Light and heavy attacks work fine, with heavy attack doing x3 damage but taking much longer to execute than light attacks.

Animation was a bit of a pain and took way longer than I had expected, eating up a full day for what I had originally though would be a couple of hours.

Procedurally generating the world also proved to be more of a pain than expected but eventually I came up with an algorythm which minimized the chances of orphaned areas. It generated the 2D map and the 3D world at the same time.

Objects where then randomly placed which was easy enough. It's completely possible for a world to generate with no objects and no enemies - just very very very unlikely. The bonus system for objects works nicely, increasing damage for kungfu and staff weapon, giving the player a reason to seek out objects and switch between weapon types. There's also plenty of heals.



Enemy Ai works well enough -  a little too well when it comes to spotting the player as stealth isn't working correctly. The one thing I didn't have time for was decent pathfinding and so there is no real wandering about on their own. As a last minute change I made them slower than the player so the player can escape. I was going to use many more enemy models but cut them back to just the the 3 classes to save time. The randomized uniform textures work nicely though.

The 3 classes give the player some choice of play style, though stealth class is reduced to speed class as the stealth mechanic isn't working as accurately as it should.

The additional randomized quest mechanic was dropped as there was never enough time to do it ... which is a bit of a shame as it was going to measure player progress. Instead I used the items, rooms and kills mechanic to create high scores.

All in all it works as a game, which is at least something. And I am relieved that I managed to ship a game in my first ever game jam.


Play it here: http://www.yorkshirerifles.com/downloads/airship_dragoon_rogue_7drl_setup.exe
 

Stuff Used:
  • Engine: Open Source Torque 3D (off github)
  • 3D: Blender
  • 2D: Gimp
  • Character Models are being reused from my existing indie game “Airship Dragoon”.
  • Animations are to be taken from existing libraries I have licensed.
  • Some audio will be taken from existing libraries I have licensed, the rest will probably be badly created in Audacity.

Monday, 10 March 2014

Progress 7DRL Challenge 2014 Update 1

Progress! There has been progress! ...
.. or alternatively I've gone mad and am halucinating it ...
... which could be possible, there was a reason that I'd never done a gamejam thingymajig before and that was for the exact reasons I've encountered.

Too much to do in too little time and everything going wrong ... so ... just like normal indie dev then! ;)

First up I created a new control system ... and it promptly died on me. This put me way back on my schedule - and that's without annoying IRL to also contend with. Creating an isometric camera system with zoom in/out went easier though, as did knocking up 3 classes of player for stealth, fighter and tank.

Having just pushed the v1.4 release of Airship Dragoon out of the door, I hadn't had any prep time for #7DRL and #proceduralDeathJam so it was very much going in from scratch. Procedurally generating a world/labryinth turned out to be a right old pain le derrière. This was mostly due to getting orphaned sections. Eventually it all came good.


Then there was a few minor problems with my models. Performance was terrible so I LODed it right back ... maybe I just should have LODed it at the start ... and then it's not like they'll all be visible anyhow but hey ... 

After a bit of tweaking and realigning pathways I had a 3D representation of the procedurally generated 2D map. It had taken the whole day when I was hoping for MUCH less, but at least it's now done.

If you really squint you can see the tiny player front and centre.


So, next up ... I might go back and spend more time trying to fix or just recode the isometric control system ... or I might just wade on with objects, items and Ai, next. Unfortunately I'm busy tomorrow so aren't expecting to get much done.