RKSanders

[Dev Log] Decrepit (GOOD... BYE)

Recommended Posts

I'm starting this one a bit early because I'll be out of the country from the 18th - 25th.

 

I'm going to make a simple Rogue-like/Brough-like that centers around item durability. The inspiration comes from the Nick Breckon patreon discord. I requested he play a game called Cinco Paus by Michael Brough because I had been thinking about its game design a lot at the time. I like how it took the idea of item discovery and turned it into the game's core idea. Around the same time some folks on the discord were discussing item durability and how it's almost always a terrible mechanic. So for this entry I'm going to attempt to make a game with item durability that's less terrible.

 

I couldn't find a podcast title that really fit the game itself. So i'll just say this is my GOOD... BYE to Wizard Jam and what Idle Thumbs was.

 

I'm working in Unity and I'm going to start with a code base I've been building for years now, because it significantly speeds up my prototyping process. It has stuff I always seem to need like: database management, object pooling, pathfinding, saving, etc. So i'll definitely have a huge head start with this, but I just want to work on the parts unique to this game and not fiddle with the more generic stuff like pathfinding.

 

I started work on it yesterday. I got a player unit spawned and user inputs that make it move with WASD. The unit's movement is also validated to only allow it to move over a floor tile.

Spoiler

basicMove.gif.0189f1dcb2c150d114fc8ae633ecad59.gif

 

Share this post


Link to post
Share on other sites

I, for one, love the durability in Breath of the Wild. Maybe I'm weird. This sounds like a cool idea!

Share this post


Link to post
Share on other sites

Ah, I remember that discussion. Sounds good!

 

I like item durability in some games / genres (System Shock, for example, would have been a decent fit for Prey, too) but, yeah, in others it's just an annoyance.

Share this post


Link to post
Share on other sites
On 1/3/2020 at 10:45 PM, Travis said:

I, for one, love the durability in Breath of the Wild. Maybe I'm weird. This sounds like a cool idea!

I liked the BotW system too. It made me try new weapon types and think about what weapons I was carrying. I always kept a fire sword for the cold and a hammer for busting open rocks in my inventory.

 

On 1/4/2020 at 4:01 AM, Sloane said:

Ah, I remember that discussion. Sounds good!

 

I like item durability in some games / genres (System Shock, for example, would have been a decent fit for Prey, too) but, yeah, in others it's just an annoyance.

Nice, I tried to find that convo again yesterday but couldn't. I wanted to look up the games that were talked about. So i'll check out what System Shock and Prey did again.

 

I think in my game I'll have each level spawn some items on the ground with a set of random abilities. The player can hold five items, with only one being active (meaning it's abilities will take effect), and items break after 1 - 3 uses. To get to the next level you have break 3 items for the exit to unlock.

 

Some ability ideas:

  • Lose/Gain an ability with each durability loss
  • Lose durability each turn
  • Lose durability on move
  • Charges the gate an extra time when item breaks
  • Stuns enemy
  • Pushes enemy away
  • Repairs another item when this item is destroyed
  • Parry - ignore damage from first enemy attack in this turn
  • Block - damage taken while this item is active will damage the item instead
  • Counter Attack- first attack made against user causes damage to attacker
  • Back stab - move to tile behind enemy, does x2 damage
  • Cleave - Damages adjacent enemies but takes durability loss for each enemy hit
  • Cursed - blocks adding new item to inventory slot till end of level

 

For the visuals I'm going to try something similar to Alrin Ortiz  interior dungeons. I really like the screen printed look and how simplified the tiles are.

Spoiler

 

arlin_3.thumb.jpg.e735b392b58d5297f536cf0905cf490e.jpg

arlin_4.thumb.jpg.4a7b6722d2b104c113738d2052862645.jpg

arlin_2.thumb.jpg.c6752867cbcc5fb5193bf51d10594cd9.jpg

 

 

Share this post


Link to post
Share on other sites

I like this concept a lot. BOTW weapon durability was great!

 

Those sample visuals by Alrin Ortiz look very good. A tile based rogue/brough-like with that visual aesthetic would be a great way to say GOOD...BYE to Wizard Jam!

Share this post


Link to post
Share on other sites
13 hours ago, RKSanders said:

Nice, I tried to find that convo again yesterday but couldn't. I wanted to look up the games that were talked about. So i'll check out what System Shock and Prey did again.

 

In System Shock 2 it's basically just another resource to handle, you've got a maintenance skill that you can put points into, so maintenance tools are more effective, and you've got repair tools to fix jammed weapons. It's not unique or special but it's a good fit for the game's theme and other systems.

 

Prey (2017) initially disabled the weapon degradation feature for some reason, which made the repair skills somewhat useless, but it can be enabled using mods. It's pretty similar to System Shock 2's implementation, if I remember correctly, except you're collecting the required resources anyway (for those fabricators), so it's not really an annoyance, just makes the game a bit more difficult. They officially (re-)added a similar system for the Mooncrash DLC, I think.

 

Couldn't find the conversation either -- maybe it was during a stream of System Shock or Cinco Paus and not on Discord? Or I was thinking of something else.

 

And, yeah, those sample visuals look great!

Share this post


Link to post
Share on other sites

I have mostly been working on the round and ability systems. I gave the units inventories that hold items which can hold abilities. By default units are given a basic_move_item and and a basic_attack_item. That they can use to preform their action during the turn.

 

When the AI move they try to get adjacent to the player. It got a bit tricky though and I had to break the movement phase up into two parts: the move queue phase and the move execute phase. I want the AI to avoid situations where it picks somewhere to move, but becomes blocked by a unit that moves there first. I also wanted the AI to execute all their move visuals at the same time. So In the move queue phase all the AI units pick a move, then each mover asks all it's friends where they plan on moving to and if it's the mover's target position, the mover picks a new position and does all that again. I figured it was worth doing because being able to query another unit's action will probably be useful for abilities.

Spoiler

02enemyMove.gif.72abfabd00d9c2b708f307f8bbc4feb1.gif

 

I also set up wall prefabs. I did have to fiddle with pathfinding :/ (only a little bit though) because they're a bit different than what I normally do. My pathfinding grid is the size of a floor tile, so the walls are not actually on the grid. Instead they need to break the connection between the grid nodes of the floor. I use A* Pathfinding Project and the author Aron has a SetNodeConnection method that allows you to do this.

Spoiler

03WallsAndPathing.gif.44882debcb7b25b523e46dc49a0485e7.gif

 

Basic attacks were pretty easy to set up after unit's could hold items. I added an ability phase that runs before the movement phases. Most abilities won't need to do the waiting stuff that the movement phase does. So I thought it was a good idea to simplify it in it's own phase. I also set up playing an animation when the ability is used as well as basic damage, health, and health bar stuff.

Spoiler

02Attacks.gif.0f58851abf9b695dc6ed2b0af191ff93.gif

04Attacking.gif.d9b5733357b6c97975655d23c4ffcc41.gif

 

I'm pretty much ready to add items that can be picked up and their abilities. I expect all the unique abilities to be the most difficult part but hopefully the ability system I made will be a good base. I might start doing some visuals soon to mix things up.

Share this post


Link to post
Share on other sites

I have been doing a lot of systems work. I got weapon pickups in (not pictured below) and a level generation system working. So you can currently advance through floors by moving onto the exit. I made the exit unlock after killing 3 enemies. It felt better than having to break your equipment. Doing that left me feeling like a perfectly executed floor was less important because I still had to get rid of a certain number of items. Maybe it could be solved with balancing the number of items and enemies. But, item abilities will also affect the durability loss to enemy kill ratio so I'll revisit it later when the items are further along. I don't think it'll be in the scope of the jam version but I'd like to give weapons to the enemies. If that were the case, their weapons would charge the gate also, which would add another strategy layer and help fix the problem.

 

Spoiler

d_levelgif.gif.edbdf5f637254e6d0f0b0d2fe01832eb.gif

 

The level generation flow is roughly like this:

  1. Loads a handmade layout of prefabs, in this case a 5x5 floor grid with walls surrounding it.
  2. Picks a random position on the top row for the entrance and a position on the bottom row for the exit.
  3. Creates walls by picking a random spot between the floor tiles that doesn't already have a wall. I didn't want any tile to be inaccessible so it checks that a path can be created from its neighboring tiles to the entrance and exit.
  4. Spawns enemies on empty tiles that are 2 tiles away from the entrance.
  5. Spawns items on a random empty tile.

I also did some art tests. I started with some simple tiles that had the screen printed look saved into the texture. But they had to be way too high res to look good and the patterns got funky when the tile was randomly rotated So I'm going to make a world space shader that applies some stroke textures to achieve that look. Here's a mock up of a forest type theme. It was quite fun to make. I think keeping the tiling simple is key so I can make a bunch of variants. Then I can just randomize the sprites when the level generates.

d_forest.png.84c209bcb88d0a7672baaaa929b0a23c.png

Share this post


Link to post
Share on other sites

Cool you are make a Broughlike! There's a 7 day Broughlike jam I participated in last year (might happen again? Not sure). A lot of interesting stuff came out of it. It's like a way to make minimalism complicated..or something like that haha.

 

Item degradation as a mechanic is a great idea too. Cool art! Do you play as a bell guy?

Share this post


Link to post
Share on other sites
On 1/9/2020 at 7:31 AM, z_bill said:

Cool you are make a Broughlike! There's a 7 day Broughlike jam I participated in last year (might happen again? Not sure). A lot of interesting stuff came out of it. It's like a way to make minimalism complicated..or something like that haha.

Haha, yea adding the abilities made it immensely more complicated. Do you have a link to the game you made?

 

On 1/9/2020 at 7:31 AM, z_bill said:

Do you play as a bell guy?

Yea, I think that will be the starting character. As a longer term goal I want to have different playable characters that restrict the items that can show up in a run. Like an armored character that mostly uses shields or a rogue character that has a lot of movement equipment and daggers.

 

I also made some enemies. Still working through some things. Not sure if I want to have multi-colored things like the slime.

enemies_mock.png.6cb31ea91e80f2a8163f83af6ef36297.png

Share this post


Link to post
Share on other sites
On 1/10/2020 at 6:19 PM, Ben X said:

Loving the art style!

 

On 1/9/2020 at 7:31 AM, z_bill said:

Cool art! 

 

Thanks! 

 

I got a shader up and running. If you want to check it out you can download it Decrepit_StrokeShader.rar.  It's made with Amplify Shader so you'll need that plug-in to see the nodes like I have pictured but it should still will work with out it.

image.png.9e0b5185e8c1bd325f557850b73d9594.pngimage.png.765bb12605efa6dbc4dbfc67233a56a4.png

image.thumb.png.5b93b8580ab01cb337748dd202651b17.png

 

The screen printed texture is applied by multiplying two textures, StrokeTex and StrokeTex2 to the MainTex. Two textures aren't totally necessary, but I can use them to help break up any repeating or just give it two different textures and control the opacity with the power sliders rather than having to make copies of the textures.

image.png.5098a63245d02daaf084c5c1243e418d.png

image.png.cc7ad3ced3fcf4cf010432dabe6d4840.pngimage.png.f13e3882decf30f68dc193b4b6980771.pngimage.png.4c28941f2a1f596392a52514c189afbc.png

 

After that it has two more masks that I can use to apply some random accent colors:

image.png.b3a8f4c76ecefe2ec0bf25abf39e8cf5.png

image.png.81d71c6593276ea78696c2cf658549b6.pngimage.png.cfad18bc530a9e50ec676d595480639c.pngimage.png.c47e7ff640670c7e3880d62a7b5633f2.png

 

I wanted the tiles to use world space UVs so floors can be rotated and the scale of the stroke textures can easily change. But it looks a bit weird on dynamic objects like characters:

06Shader_worldSpace.gif.9f79684deeb0a64ab2e95db9f0f6c1e3.gif

So I added a static switch on all the stroke and mask textures to switch between world space or local space UV's per material.

06Shader_localSpace.gif.39c8a35b171287b7ecd9747b7f830ee5.gifimage.png.c14d8eb92480286f3f0c1a7c93983694.png

 

So with this shader all my tiles and characters are basically just masks.

image.png.7fc11d45de978b7fe1df153e78b6d6eb.pngimage.png.f020fbd4863a0a333008453404dcf0eb.pngimage.png.857bbf0499e3002f277633cadeca4aa0.png

 

And here is the forest tile set up in game. I tied the sprite colors and shader accent colors to a level theme asset. It makes it quick and easy to try different color schemes.

image.png.ece410b37b591ba99a63ed9bb96e5b01.pngimage.png.71455fd55425d8ef9ac7c37c5e876398.png

image.png.49f2e47c01176c86bccb1fba15ca3868.pngimage.png.9f7221a17d8563fe39454e9cb8c5bdca.png

 

Share this post


Link to post
Share on other sites

Yeah, that already looks like a game ready to ship. :tup:

 

Also, thanks for the detailed explanation -- shaders are still a bit of a mystery to me, even with Amplify or ShaderGraph.

 

(Speaking of ShaderGraph, is it just me or has the amount of optional features Unity offers gotten a bit confusing? There's all that finished and pre-release stuff on the PackageManager, a few official things are still available on the asset store, I think, but there are also additional pathfinding features, for example, which seem to be only available from a GitHub since 2018 or so despite apparently not being experimental?)

 

Anyway, great work!

Share this post


Link to post
Share on other sites

Thanks everyone!

 

On 1/14/2020 at 4:46 AM, Sloane said:

(Speaking of ShaderGraph, is it just me or has the amount of optional features Unity offers gotten a bit confusing? There's all that finished and pre-release stuff on the PackageManager, a few official things are still available on the asset store, I think, but there are also additional pathfinding features, for example, which seem to be only available from a GitHub since 2018 or so despite apparently not being experimental?)

 

@SloaneUnity is a complete mess right now. Another example is that they just deprecated all that new multiplayer stuff they made a few years ago. It's so hilariously bad that they have a flow chart for people to use to decide if you should start a game with the deprecated system or if you should use beta code for the new system. Basically they're in the middle of switching to an ECS architecture and that means they have to redesign everything in the engine. I do think it's a better architecture for making games but it's really going to be off putting for everyone who learned how to use the Object Oriented architecture.

 

I Did some work on the equipment UI. The red pips are the item's durability and the green pips are the item's abilities with tool tips.

 

image.png.84b7c45a76e7e1b466571952a8584a90.png

07UI_2.gif.4d95f11eb0809b2a2a20225a7bab54a5.gif

Share this post


Link to post
Share on other sites

Being able to configure and use multiple color palettes easily for games with multiple discrete levels and being able to create new moods while keeping the same base assets is very nice. It's great for devs but I think also especially for games that support mods or mapping. Like Doom mapping, that community, they manage to make very striking and different looking stuff with the same textures as the original game.

Share this post


Link to post
Share on other sites
On 1/16/2020 at 1:02 PM, CEJ said:

Being able to configure and use multiple color palettes easily for games with multiple discrete levels and being able to create new moods while keeping the same base assets is very nice. It's great for devs but I think also especially for games that support mods or mapping. Like Doom mapping, that community, they manage to make very striking and different looking stuff with the same textures as the original game.

@CEJ Yea I love stuff like that. The framework I'm using serializes everything, even the prefabs, into a yaml database. So it's very easy to mod. I'll write more about it when I release the build, but you could very easily create your own color variants or change enemies stats and whatnot.

Share this post


Link to post
Share on other sites

I think this game is pretty much a wrap. I'm leaving for vacation tomorrow and get back next Friday so instead of scrambling to do a build and put up an itch page I'll do it when I get back. I think I have a solid prototype, I didn't get as many abilities done as I had hoped. They were definitely the most difficult part. I ended up having to rewrite the ability stuff a couple of times in order for it to work the way I wanted. Most of the abilities are kind of samey, they pretty much all involve modifying damage or doing extra attacks, but I think it shows off the idea well enough. The game is severely lacking in the audio department. I set up the systems for abilities to play audio but I haven't added sounds for everything. Maybe I can squeeze that in when I get back.

 

image.thumb.png.b39379823e19c50be35fac38bce07a88.png

image.thumb.png.3216412d4c5c8003f32cf70ac5b1fc9c.png

 

Here's some game play:

gameplay1.mp4

gameplay2.mp4

 

Good luck on the rest of the jam everyone!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now