About Yaguar (twitter: @GameDevScott)

Entries

 
Ludum Dare 36
 
Ludum Dare 28
 
Ludum Dare 27

Yaguar's Trophies

Yaguar's Archive

Another “nearly there” post

Posted by (twitter: @GameDevScott)
Sunday, August 28th, 2016 11:49 am

So my game for the jam is nearly done. I’ve got all my mechanics, a decent set of graphics and my end “cut scene” is 80% done.

I’ve really enjoyed this theme but it hasn’t been without its ups and downs.

My master original plan was to throw together a quick render engine and use a pre-existing UI system and base the game in C (as one element of my ancient technology). I’ve been working on my own engine as a personal project and I managed to steal a lot from that.

A few hours in though I made the decision to drop this plan due to some integration issues with external tools and moved over to Unity. I had no plans to go overkill for this jam so moving over was a better choice for me.

Luckily my tech choice wasn’t the only ancient technology mechanic I was working towards. My ancient technology is… the keyboard! Or more having to use words to interact with the game a little homage to text based adventures of days gone by.

 

 

From here the plan is to add a HELP comand to give the users some help, a main menu, finish up the end animation, put in some end screens, add sound and if there is time left over sneak in a few easter egg commands.

Derelict – A code post-mortem

Posted by (twitter: @GameDevScott)
Thursday, December 19th, 2013 3:50 am

Derelict Title

 

Derelict was my first look into Unity 4.3’s 2D toolset and honestly, I wasn’t let down, much.

Working with sprites proved effortless and movement controls for the player were simple thanks to only using a 4-Axis movement.

What did prove interesting was our creature. A fairly simple FSM that used several senses (smell, sight and sound) to track down the player. Sight and sound have pretty much been explored everywhere but using a players scent to track them isn’t used much but on a code side isn’t too different.

The original concept for the scent had it dispersing from the player and setting up a strength and trail along a grid based movement system that the AI could pick up if it wandered into range, moving quicker as the scent screw stronger. This idea was heavily scaled down.

The player instead left a little trail that decayed over time. All strengths were 1 and they were treated like dynamic waypoints that worked really well for the AI tracking you.

Derelict Scent

The above was a later altered version of the monsters sense of smell. A stronger cone in the front but a smaller 360 degree sense overall. Originally we only used the front box to detect scent and it had a hearing box that covered 360. That was how the jam implementation was done, the above was a later thought that worked a lot better.

These boxes however only focused on the scent left by the player, meaning that if you were close to it and kept just enough distance (and kept quiet) you could actually avoid the monster. This came down to the fact that the sense of hearing was ignored if it was on your scent, an original design choice in the code but in hindsight (and after some sleep) hearing was a better use for letting the creature know in a 360 degree area that you were close.

Sight overwrote scent following and had the monster rush you down and attack. If you were seen, you were done for.

Overall it followed pretty much the following idea:
– Try find the scent of the player (within your front arc)
– If that fails, can you hear them behind or around you?
– If you see the player, drop everything and go for them.

The downside again was that if the monster didn’t see you and carried on following scent, walking or running would not alert him. MASSIVE oversight.

What scent did give us was a nice dynamic waypoint system which worked in conjunction with the static waypoints that the monster followed:

Waypoints

 

Metric shit tonne of waypoints were placed.
To overcome it just following a predictable path the monster will actually use the wall vents to move around as well. This was handled by the roam state (I’ll cover the FSM in a minute, sorry). If it hadn’t found you in X time it would take a vent to another area and search around there and repeat. This was a tiny bit RNG in whether you were detected or not but made for some “OH SHIT!” moments in testing when I just didn’t think it would find me.

One interesting thing that happened with all this was the doors. Since we were using static waypoints and not actual pathfinding, due to time constraints, we had to find a way for the monster to navigate doors. The conclusion was to allow it to use vents (on either side of the door) to pass through. During roam it would just go straight through. If it was chasing you and the door was closed we’d give the player some time to get away before it used the vent. This kept some balance and the original plan for the doors in check without screwing up the creature when it was just walking around.

The AI finally broke down into the following FSM all run by “MonsterController.cs”
РRoam State ( General purpose waypoint following state, jumped around the map through vents ).
– Search State ( Followed dynamic waypoints (scent) and allowed the creature to track the player, its main tracking state ).
– Investigate State ( When it heard a sound it would use this to follow the sound, essentially creating a new waypoint to the location where it heard it ).
– Chase State ( Once seen, it jumped into this, gained a speed boost and went for the player ).
– Attack State ( Attack and shout, send a kill message when it was done ).
– Victory State ( Stop the AI, it won ).

I’ll try get a UML up for this but the general idea was.
Roam goes into anything.
Search will return to roam if it lost the trail, transition into chase/attack if needed.
Investigate would transition into Search/Chase/Attack and Roam if it lost the trail. 99.9% chance it would always lead into Search as it turned around and picked up the trail.
Chase would go into Attack when in range. If you somehow escaped it could pick up the trail or return to roaming if you made some impossible escape (in as a safety precaution).
Attack would always succeed and lead into Victory.

So that is the main parts of the game. We had a few other little pieces like pick up (linecast vs. layer) and the torch…

The torch was just a texture with an alpha’d section to reveal the player and light up the floor (AKA Alpha 0 there). We knocked the Alpha on the total down a little so you could just make out the scenery. Unity’s 2D draw layer stuff was brilliant for this as we just made sure it was drawn as the top layer. There were some plans to try do some more lighting things with this (flickering lights etc) but I’ll save that for a later experiment.

Hope this proved interesting for someone and see you all next Ludum whether I’m solo again that time or part of a team like on Derelict.
Scott (https://twitter.com/iOSScott)
Art to follow from Dan (https://twitter.com/Daniel_Scholes)

Derelict – The first 24 hours.

Posted by (twitter: @GameDevScott)
Saturday, December 14th, 2013 7:13 pm

This time around I’ve been joined by my artistic friend Mr. Daniel Scholes (https://twitter.com/Daniel_Scholes).

Bonus of all this is that we can go a little slower than the 48 hour compo as we’re not valid to enter. So the big question is what have we been up to?

Derelict Title

 

We chose a few “only one”. One torch, one life, one monster, one escape.

For the last 24 hours we haven’t really slept and there seem to be no plans on doing so soon either. Shared sleep reserves in the time are about 7 hours. Jam or no Jam we’re looking at a 48 hour time frame with some extra clean up time. This’ll give us a load of man hours.

We wanted to do something a little bit interesting with our creature so we’ve given it a powerful sense of smell and the ability to track the players scent. In turn we cut down its ability to see and hear and have let it pick up your scent to use for the chase. This has given the project a bit of a larger AI requirement than originally planned but some cool stuff has come out of it. I’ll be exploring this area and the sense of smell a bit more post-LudumDare28 for sure.

Creature Sprite

 

 

Player wise we’ve given them movement along 4-Axis. Going to try push this as a little bit of a tense experience so once the AI is done all remaining time is going in to a few little scripted moments that we hope will at least frighten a few people. Don’t worry too much, you’ll have a torch!

MockUp

That’s all for Derelict so far on day 1 but I’ve been told I can’t sleep till the AI is finished so I think day 2 should show more progress now that several elements of it are up and running already, there are just a few special moments that really need to be in place to call it complete.

End of Day 1

Posted by (twitter: @GameDevScott)
Saturday, August 24th, 2013 2:31 pm

 

Day1Progress

 

 

End of Day 1.
Implemented:
Combat System
– Player attack + magic + potion (heal)
– Enemy attack (going to have multiple types tomorrow)

Menu System:
– Fast access menu’s.
– Quick switching, work with skills correctly yadda yadda.

Game Systems:
– Track and field control scheme.
— More Spam is more damage, healing etc.
– Enemies spawn every 10 seconds.
– Enemies will stack, so you could be fighting vs. 2 if you are too slow on the old T&F skills.
– Room made for fail states (not actually in D:)
– Safe zones (stop the timer!)
– Player Movement (needs turning > Strafe)

Other systems:
– Texture tool. Create textures in Unity3D via a custom paint interface and place it straight on a selected model.

Less than 28 hours till Ludum Dare submission so hope I finish my first gamejam!
Time for a 4 hour nap before a final 23 hour flat out finishing up.

Programmer Art

Posted by (twitter: @GameDevScott)
Saturday, August 24th, 2013 1:45 pm

So due to my inability to really model or texture at all, I came up with a solution.

Took a couple of hours but I now have a texture editor that I can use in unity and directly place the texture on to the models in scene. Downside? I spent a couple of hours doing this. It’ll probably save me that time tomorrow and it is pretty cool so I’m not really mad.

Unity3D Texture Tool

Workspace

Posted by (twitter: @GameDevScott)
Saturday, August 24th, 2013 11:55 am

Oddly clean desk for once. Time for a break! Inspiration behind this can be seen on the left monitor.

Somewhere I wont be sitting most likely come Monday.

Somewhere I wont be sitting most likely come Monday.

RPG Random Battles: Evolved.

Posted by (twitter: @GameDevScott)
Saturday, August 24th, 2013 11:01 am

On seeing the theme, I wont lie, I was a bit scared. It was one I think like many that I just wasn’t prepared for. I didn’t want to do something too obvious so I spent a little time thinking about it and took a shower at 2am.

After bouncing a few tired idea’s off a friend I had my concept. The ever loved RPG Random battles, but on a timer, this let me meet the theme and add some chaos to the gameplay.

Simply all you need to do is cross a map and reach a town (which counts as a safe zone). The difficulty lies with the fact that every 10 seconds (even whilst in combat the timer is going down to the next spawn) you have to fight an encounter, which plan to be randomly assigned stats based on the players current level.

These battles can stack, and multiple enemies may join the fray if you don’t dispatch them quickly so this was a focus point for every system in the game. Speed! The entire game is designed to be fast.

The menu system is quick to navigate with either a control pad or a keyboard (using the buttons on a pad or Up/Down/Left/Right arrows on the keyboard) and as such all menu’s will have a maximum of 4 options. The level up and stat system are built into this.

R1 -> Triangle will bring you straight to the stats menu. Spamming triangle will spend your allocated points in “Attack” whilst Cross will increase your Magic power. There are a two other stats but you get the idea.

Hitting L1 will close the menu so you can move again, everything was about speed and being able to just shutdown the menu’s is pretty important with that in mind. There is a speed stat for the player which increases their movement speed, those looking to avoid battles can pump this to turn into a bolt of lightning. Just be careful you don’t overshoot town though because their is no forgiveness. Even if I made the choice to allow for it I don’t think I’ll have time to give people that option and right now the choice is yours, everything has a downside.

The combat system Had to follow the same idea of speed. I did get a little inspiration from the “10 Second Barrier” which led me on to Track & Field. Every frame is open to launch an attack or spell (that hit instantly). The enemies have large hit points to accommodate this choice and gives the battles an endurance edge. Will you tire out before you make it to the town or will you be overwhelmed?

Death (HP to 0) and being overwhelmed (more than 10 monsters in combat at once) are the current fail states. I’ve not hit overwhelm myself yet but that could just be years of Track & Field or a balance requirement. Perhaps it’ll be something that may happen later (perhaps a little boss is in order!)

Little screenshot showing damage counters coming from the enemy in combat.

Early piece of combat showing damage counters on the enemy

Early piece of combat showing damage counters on the enemy

 

This is my first GameJam and I’m really feeling it after running on 3 hours sleep but I want to finish the code today so I can focus on sound and some form of visuals tomorrow before submission.

 

Thanks for reading!

Scott.

(more…)

[cache: storing page]