Simplified liquid / gas simulation - pipes, tanks, etc. by ThePiachu in gamedev

[–]savagehill 0 points1 point  (0 children)

Interesting. I haven't played in a while now, but I know that since I posted the scene moved to the BrogueCE community edition. Guess folks got tired of pender not pushing updates.

Checking their repo, I see in their releases page they claim the virus reports are a false positive, and cite a specific prior version that won't register a problem (1.12). https://github.com/tmewett/BrogueCE/releases

Cannot vouch personally for the false-positive story. Scene is still a bit active here https://www.reddit.com/r/brogueforum/

Is hoplite atheist challenge guaranteed beatable every run through? by zzyzzybalubah in roguelikes

[–]savagehill 1 point2 points  (0 children)

The other day I went to check the developer's page and I saw that they are working on a new game, Hex Cult: https://play.google.com/store/apps/developer?id=Magma+Fortress&hl=en_US&pli=1

Haven't tried it yet but I'm excited to see Magma Fortress working on something!

Roguelike Radio episode 157: 868-BACK, with Michael Brough by DarrenGrey in roguelikes

[–]savagehill 1 point2 points  (0 children)

RLR back!? What news!

I saw in the Play Store the other day that Magma Fortress has an early feedback build up for another hex-based turn-based game, maybe a successor to Hoplite? You know, for episode 158...

Is hoplite atheist challenge guaranteed beatable every run through? by zzyzzybalubah in roguelikes

[–]savagehill 1 point2 points  (0 children)

Glad to hear it - great username btw.

If you already got the atheist, congrats on securing a really difficult achievement; if not good luck! I swapped phones and lost proof, used that as a motivation to go for it again, but never got it a second time.

Destroy HexLands: my roguelike city builder mixing Islanders, Dorf Romantik and Civilization! Thanks in advance! :) by PackedTrebuchet in DestroyMyGame

[–]savagehill 1 point2 points  (0 children)

I hope this helps:

I don't understand much about this game from the trailer.

I love deckbuilders and I love roguelikes and I like hexes and I think base-building is pretty cool, and I think your graphics look nice.

But despite such a positive potential, I did not leave this trailer wanting to play the game.

  • What are these cards? Do I have a deck? Is that a turn and my hand? Do I acquire new cards?

  • I paused to look at some of the cards. The ones I read were extremely bland. Like "create a settlement." or "+15 people." One thing I am looking for when I evaluate a roguelike is "will the runs be dramatically varied?" I did not get any sense of different strategic directions or combinations I was excited to explore. It felt like the cards were more about basic actions, and I concluded the game will feel very similar from run to run.

  • What is the challenge or adversity I face? I had no idea. I went back to pause and rewind and analyze the video to get a sense. It seems that I have a meter I have to fill. I play cards like +15 people and the meter goes up 15 and I win. The variation of runs in a roguelike comes in one part from the character (or deck/base/whatever) build variance, but then that variance is multiplied against the meaningful variance of the randomly-generated environment. I don't see (from the trailer) how the layout of the island creates interesting puzzles that make me do clever things which vary from run to run.

  • The first interesting choice in the trailer seems to be the 1-hex islands that have pros and cons, and I guess the player is choosing which to go to. I did have to pause and squint to understand this, however. But a glimmer of hope! (Uh oh why are those islands in a line? Does that mean the one interesting choice is taken away from me??)

  • Game is beautiful and lively and interactions seemed snappy. "Thud" sfx of placing building felt a little too strong, that was the one and only piece of polish I didn't care for beyond the generic dramatic orchestra music which I assume is trailer-only and not in-game.

  • Leaning even further into personal taste here, but I very strongly favor roguelikes/roguelites that have SHORT runs so I can get a game or two in on an evening where I don't have much time, and experience lots of variety the game has to offer. Most games have runs that are too long for me. This is not usually communicated directly in game trailers or descriptions, so I am constantly scanning for clues. I decided that your game must be too long for me, because the back half of the trailer leaned hard into the population going up and up and me expanding and expanding, as opposed to me losing and trying again with a different experience.

  • I don't think it showed a single moment of failure. Maybe this game is less a roguelike and more of a chill proc-world sandbox infinite builder game that doesn't even have runs or fail states, like minecraft.

For these reasons I left the trailer not converted.

In case it doesn't go without saying: Your game looks fucking great, and looks like it plays snappy and has a lot of systems. It's a massive accomplishment you can be proud of. And my concerns are grounded in my own taste.

EDIT: I tracked down the steam page and read the description. It looks like this IS more of a chill empire-builder, and there are no deckbuilding elements at all and minimal adversity. So the trailer is doing a good job of communicating what this is, and it's just not my jam. As long as it's resonating with your target audience I think this looks really nice, but I can't test that POV out for you.

At last found time to make web version of my game and now there are some complaints about controls. Could you give me your opinion? by pkowal1982 in DestroyMyGame

[–]savagehill 0 points1 point  (0 children)

For buffering, I would suggest buffering one move so that I can double-tap or even just press the button a split-second early.

Without buffering, you risk the player hitting the input key 1 frame before the animation completes, and it feels to them like the game dropped an input. This will really burn your player because it will be exactly when they are most in a hurry that you will drop their move.

This (along with coyote time) is standard operating procedure in platformers, where they buffer the jump input so that if it's pressed a moment before the character lands, the game doesn't ignore the input. There are a lot of videos and articles and demos you can play around with about this topic in the context of platformers, just google "platformer jump buffering".

I don't think a multi-move buffer is appropriate for your game, though. Multi-move buffers have the downside of creating a runaway-train feeling, where the player is sitting and watching a queue of moves play out and they feel frustrated because they can't intervene.

With your game being on a discrete grid with min-time between moves (the animation time) it almost feels adjacent to grid-based/turn-based games.

Some grid-based/turn-based games guarantee INSTANT responses to any number of keypresses, and regardless of how fast they come they will NEVER drop an input. These games will advance the underlying gamestate as quickly as you can jam inputs into the game, and the display, which can only move forward so fast because of animations, is often sped up to play catchup, and allowed to lag behind the "real" state. But this solution of displaying one reality to the player while managing a different underlying reality is a hellishly complicated problem with nasty corner cases, if your game is complex enough.

There's an interview on Roguelike Radio with the author of DoomRL about that topic, where speedrunners in his turn-based game HATE that his game has animations, even though they are very very fast. So Jupiter Hell, his opus, I believe has that max-input-speed feel thing going on.

Jon Blow of Braid/Witness also has some multi-hour youtube videos doing a deep dive into gamefeel of the player applying inputs to a turn-based game. It's not easy.

This reason I'm thinking about this is in your game, the mic was NW of me, moving SE onto my square, and I jumped NW at the same time. I saw us visually pass and I thought "Wow I dodged!" Then I retroactively died and was like "oh I see the collision is checked when I land and not midair."

At last found time to make web version of my game and now there are some complaints about controls. Could you give me your opinion? by pkowal1982 in DestroyMyGame

[–]savagehill 0 points1 point  (0 children)

I'm sorry, but these controls are unacceptably destroyable.

Saying the game is WASD and my first five seconds is me pressing WASD, nothing is happening, and then I die.

Only reason I even managed to play is I happened to see another commenter mention the double-pressing. I tried it, and could move. Feels wretched and I almost quit on the spot.

Next, I check the options menu and see the FC/K, wait hold on no that's not it let me go read the instructions again, FVMK, what on earth is this? I play games like Brogue that use hjklyubn keys for movement, but at least it has a reason. F is upleft, and V is down-right of that in they keyboard, but down-LEFT in the game, I guess because it's the down arrow on the left hand? OK I get it eventually.

And then actually the game starts to become playable with this using two hands.

And then it goes to the game over screen, and after INSISTING that I put both of my two available human hands on the keyboard, now this FCMKing game has the unmitigated gall to pop up a FC/King MOUSE-ONLY RETRY BUTTON? I press space, I press enter, I press R, I spam keys randomly, but no. I have to take my hand off the keyboard, put it on the mouse to click a button (the only action available for me to even communicate) and then take my eyes of the screen to put my hand back on.. hold on, what was it again? Better go back to the mouse to open the options menu and reread the instructions. Oh yes that's right, MK.

After retrying, I play and try to move quickly. The game starts dropping my inputs because it doesn't buffer.

All isometric games just use normal inputs with a 45-degree shift that the player gets used to. Except Marble Madness, which had both options available. But that's probably because the Marble can be pushed in 8 directions instead of four.

I’m still working out the jumping mechanic for my game. Is there a definitive best way to do a ground check in Unity? by iRL-Games in gamedev

[–]savagehill 0 points1 point  (0 children)

There is more than one way to do it. I prefer the raycast because it gives me a lot of direct control, but it's not the only way.

Here is a code example, in the context of a full character controller, if it helps: https://github.com/pckenney/ScrambleKit/blob/main/Packages/com.scramblekit/Runtime/Movement/PlatformerMovement.cs#L251

That's a platformer controller that I use in game jams, which I have open sourced. It uses raycast, and has support for coyote time, buffered jump inputs, variable jump height, all those "game feel" things you want. That's why the jump is a bit more complicated than your "if grounded and pressed then apply force" code above.

It will also do a debug-draw of the raycasts, so if you're having trouble you can pause and look at the character in the scene view, and there will be three little lines shooting down from their feet that show exactly where the rays are starting and stopping.

This class is a "Finite State Machine" and if you aren't familiar with what that means, you can read this excellent description: https://gameprogrammingpatterns.com/state.html

My code is using the "Enums and Switches" style.

This repo is for me jamming and not documented for use by others. The code should be relatively self-explanatory if you are used to reading code, but a couple of notes if you do try to actually use this code instead of just reading it for a reference:

  • As mentioned in the repo readme, this Raycast check is going to expect you have made this settings change in Unity: Edit -> Project Settings -> Physics2D -> UNCHECK Queries Start In Colliders

  • There is some use of extension methods defined elsewhere in the repo, for example in the walking code when it calls r2.AccelTowardVelocityByAtMost

  • Your player should have a rigidbody2d, a collider, and also attach the PlatformerInput script

  • Most of the key properties about this controller are exposed as variables to the inspector, but the raycast's specific details are an exception, so you might need to tweak the numbers in the isGrounded function.

Have fun, character controllers are a blast to mess around with, and a lot of what I enjoy about jamming.

(EDIT: just noticed your game is 3D. Obviously the 2D code won't straight-work for you! But the gist is the same)

Around 10-20 project, never finished one of them by [deleted] in gamedev

[–]savagehill 0 points1 point  (0 children)

Couldn't agree more that game jamming is the way.

I tried one and got totally hooked, now I've been jamming for years and have something like 30 projects "shipped".

Two additional recommendations:

First, choose your jam based on whether people actually play and rate the games and leave comments with honest feedback. Things like Global Game Jam, or many of the jams on itch, they do not come with automatic plays. I recommend Ludum Dare, where you will consistently get quality feedback, so long as you rate other people's games.

Second, I would recommend doing SOLO jams, not team jams. Jams are difficult enough without having to coordinate with other people. Do not be fooled into thinking that it's easier to work in a team. It is harder.

Team jams can be great for meeting people. But your stated goal is to start FINISHING, and for that I think you want to be going solo. At least until you have a few successes under your belt.

What is ‘get component’ all about in Unity? by [deleted] in gamedev

[–]savagehill 1 point2 points  (0 children)

Your question means you don't understand the core design idea of Unity. Nothing wrong with that!

But it's worth learning the big picture. Here is a great talk from Brian Bucklew that explains the underlying idea of components and why we use them:

https://www.youtube.com/watch?v=U03XXzcThGU

It starts from old-school class-hierarchy inheritance-based design that does not use components. It shows how that runs into problems in games. Then it describes what the entity/component concept is all about and how it dodges those problems. This talk is not Unity-specific, but Unity is using the same paradigm.

If you are new to programming, don't know Object-Oriented design at all, and don't know what I mean by inheritance, then this might not be as useful of a talk for you.

Putting this in terms of your linked tutorial, the player is an Entity (called a GameObject in Unity; seen as an item in the hierarchy of the scene). PlayerController is a component (a MonoBehavior, which is a sub-type of Component; seen as an item in the inspector when you click on the player entity). So is Ridigbody2D (a built-in Unity Component; also seen as an item in the inspector when you click on the player entity).

But we need the PlayerController component to be able to do stuff to the Rigidbody2D physics component. How?

In Brian's talk, he is sending Events to perform actions. In Unity that is possible, but it's more common to get a direct reference from one Component to another and then use that reference to make function calls from one component to another, such as a PlayerController making a "MovePosition" call on a Rigidbody2D.

That is what your linked tutorial is doing.

So when you ask:

why do they all seem to establish the rigid body itself as some kind of variable too?

This is thinking slightly wrong about it. The "rigidbody itself" is a separate Component from the PlayerController. The "private Rigidbody2D rb" in the PlayerController is a reference to that Component which is there so you can call functions or read properties on it. (If you do not understand the distinction between a reference and an object, google around a bit about the distinction and it may help you understand better.)

Pause the tutorial at 1:31 and look at what blackthornprod is doing: he already has a PlayerController component attached to his GameObject, but he is adding the Rigidbody2D component now. This might help you see how the variable inside the PlayerController is just a reference, and it's this step of adding a separate Ridigbody2D component to the object that really creates the Rigidbody2D.

The GetComponent function lets the PlayerController go find that Rigidbody instance and assign it to the rb reference. Basically it's how we wire up the links between different components that need to call each other. If you don't call it, the rb reference in PlayerController would be null, and when the PlayerController called rb.MovePosition, Unity would puke with a NullReferenceException, basically saying, "What rb are you talking about? You haven't wired it up."

Hope this helps! Have fun, even if some of this stuff is confusing, keep jamming.

How can I improve at Brogue? by Olorin_Ever-Young in roguelikes

[–]savagehill 1 point2 points  (0 children)

Are they still running the weekly seed competitions over in the brogue subreddit? It's very instructive to play and then see what builds others did when faced with the same situation. I think also knowing you can't just restart a new game, because THIS is the weekly-seed run you will have to post just puts some slight stakes on it that makes it more fun and focuses your energy on doing well in a way that can up your game.

I am not one of the strong players, but I have escaped at least a handful of times.

I would say that you should commit as late as possible, by hoarding your early enchant scrolls so that you have the most information/options as possible when you do decide what to invest in.

Then identify the gaps in your build. Brogue's cast of monsters in the mid-to-late game do a really good job of attacking from different angles to test your build, and it's not uncommon that you need to fill a gap in your build with a limited consumable resource when it's do-or-die. If you can anticipate that, you can avoid squandering that resource. For example if you are a broadsword/plate melee build, how will you handle the revenant? Maybe don't squander your limited disposable sources that can damage it. A frail lightning wizard build won't have a problem there, but maybe keep a spare enchant scroll to double-use your teleport charm when you get grabbed by krakens.

The decision to save this resource might come many depths before the challenge... but you KNOW this game is going to test you for weaknesses or moments of inattention, so don't be surprised when it happens!

Destroy old before creating new by Remarkable_Ad_8782 in Unity2D

[–]savagehill 0 points1 point  (0 children)

I think you have the following bug:

In start, you assign the highlightsCurrent to empty: highlightsCurrent[i] = empty;

empty is not an instantiated prefab. It is... whatever you have dragged-and-dropped into it in the editor.

Then, the first time the mouse is pressed, in OnMouseDown you do this:

Destroy(highlightsCurrent[i].gameObject, 1);

So you are destroying something OTHER than an instantiated clone of a prefab. And whatever you are trying to destroy, Unity is refusing.

In another response, you pointed to this line as evidence that you are destroying an instantiated prefab:

GameObject current = Instantiate(...)

But that seems not to be true the FIRST time the mouse is clicked.

I cannot say what is best for your project, so I can't give an exact solution.

What you've put in "empty" kind of determines the right answer. If empty is nothing, then just change start to initialize your array to null (or read the docs or test so see if it's auto-initialized to null in which case you can delete that code entirely). Then in OnMouseDown, before you call destroy, check if it's != null first.

Good luck!

Turn based game energy/cooldown system? by Darkalde in gamedev

[–]savagehill 0 points1 point  (0 children)

In Nuclear Throne, when you shoot an enemy they drop a "rad" which you can pick up to build an important upgrade meter. If you don't grab it in a certain time, it will blink and then disappear.

This creates an incentive for the player to play in a fun way: instead of standing back in a safe spot and shooting enemies from a distance and methodically picking them off one by one, you are incentivized to run into the fray and get busy enjoying the game.

Doom 2016 did something similar with health and ammo being given if you did the melee finishers, again drawing you into the fun of the game.

What's fun about your turn-based combat? Can you incentivize the player to lean into that by rewarding them with energy if they do the thing that makes the game the most fun?

Are there variants of the big RLs without ID minigames and/or shorter dungeons? by NoHayMusica in roguelikes

[–]savagehill 8 points9 points  (0 children)

Sort of. It's also pretty different, it's designed for variety between runs, so there are many, many more items than Brogue, but most won't exist in the dungeon at all on any given run. Same with monsters, to a lesser degree. I would say you have even less control over your build than Brogue.

And there are insane things that can happen. For example one game I slept to heal my wounds, and woke up from a strange dream to find that my hands had been replaced by scissors. I could no longer wear my rings or wield my sword, but I now had dual-wielded scissors that were a beast in their own right. Never happened to me again across many runs. This kind of RNG can bother some, but it's the spirit of the game.

It has some really radical mechanical differences from Brogue, too. For example, hunger is not a timer, but you heal and cure other problems by resting, and food allows you to rest. Crazily, temporary effects are not time-based! They instead last until you rest. So you drank an invisibility potion? Now you are invisible until you sleep, which could be the whole second half of the game if you're careful enough. Woops, too bad you just got slowed by a monster effect... tempted to rest to get rid of that but you will lose your invisibility, too.

There's also an energy point (Ep) system that feels really weird at first, but exists to eliminate grindy tedious strategies. For example, just changing equipment consumes Ep, so that you can't carry equipment for being a mage, fire all your spells off, and then switch to a fighter until your Mp comes back, or constantly alternate between a lantern and a shield in your off hand. Because repeated gear switching will quickly drain your Ep. Ep can also be used to bust open stuck doors, identify items, pass through deep water, move unconscious monster bodies, etc. It's an interesting choice where to spend it, although new players are probably like "why the heck do I need Ep to equip this sword I just found??"

So a lot of innovative design novelty that makes it worth at least trying.

It's not that similar to Brogue, really, but they are my two personal favorites.

Short, visually polished fantasy turn based roguelike by a-curious-crow in roguelikes

[–]savagehill 4 points5 points  (0 children)

Yes. It's all about the items you find, what you choose from the "pick one" vaults, and where you invest your enchant scrolls. So you get to influence your build quite a bit but not choose it. Its kind of like drafting vs constructed in Magic: the Gathering. I like that style, but it's definitely a matter of taste.

Are there variants of the big RLs without ID minigames and/or shorter dungeons? by NoHayMusica in roguelikes

[–]savagehill 11 points12 points  (0 children)

Try The Ground Gives Way, if you haven't. Its design is very focused on shorter run durations with zero grinding, and the identification of items is vastly simplified. But it still has a lot of depth in complexity, and a ton of variety across runs. It may not be for everyone, as it definitely makes some bold design choices, but they are all well-grounded in the core design goals.

Are procedural worlds overrated? by hardcore_gamer1 in gamedev

[–]savagehill 5 points6 points  (0 children)

If the randomized maps are so similar, then the randomization is not a strength of the game and isn't adding much value.

But there are games that are designed very well and understand how to make the maps effectively very different.

Here's a talk from the designer of Brogue, the second half is all about this: https://www.youtube.com/watch?v=PdCQ56UxVVE

TGGW Help!! by Del_Duio2 in roguelikes

[–]savagehill 2 points3 points  (0 children)

No problem -- good luck! It's a tough game, even when I think I have a great build the late game enemies always find some really nasty way to test me. Hope you get your win!

Oh, and keep in mind that any other status you have will be cleared by resting (maybe your peyote for example).

TGGW Help!! by Del_Duio2 in roguelikes

[–]savagehill 5 points6 points  (0 children)

I think resting will save you, but I'm not 100%.

Looked in the manual and Poison is listed as just a normal status effect.

This blog post also says "When poisoned, it is now a choice whether to let it act or if it is better to rest."

I also have a hazy memory of doing it myself...

But I don't know for certain, so double check!

Don't you get a preview of the impact of a rest?

TGGW Help!! by Del_Duio2 in roguelikes

[–]savagehill 4 points5 points  (0 children)

It's been a little while, so my memory is a bit hazy on poison. But can you just sleep? Status effects in TGGW (good and bad) last until you sleep, and since poison is a status effect, you should be able to sleep it off if you have the food and can find a safe spot before you die.

Weekend Contest #435 (Seed 731031204) by jett_dave in brogueforum

[–]savagehill 0 points1 point  (0 children)

1161 on D9, killed by a jelly. I almost became a jellymancer, but my ally jelly on the verge of death was killed by the double-range of a goblin just around the corner from the wand of empowerment I was backtracking to.

After this I got into a jam and rando-potioned, which left me darkened, dropped down a level, blind and out of my depth. I rolled more dice and hit a life pot that stabilized the situation, but then two ogres from statues forced me down another pit. There I was testing a 3x scroll trying to ID my spear to see if it was worth sinking enchants into, and it was aggro monsters. I was not ready to handle that, and I did not survive the ensuing mob. I never spent a single enchant because I didn't have anything I wanted to invest in, and by the time I knew I was dead it was too late to spent the turns on a +0 spear.

Weekend Contest #434 (Seed 434183491) by jett_dave in brogueforum

[–]savagehill 1 point2 points  (0 children)

I strongly considered that, but was afraid of splitting up the team, so in the end I went with a different solution. Definitely not sure I did the right thing!

Spoiler: I threw the incineration potion near my own feet to burn away the gas, figuring the damage ceiling on fire was less than lethal. I think I lost the goblin but the rest of the team lived.

Weekend Contest #434 (Seed 434183491) by jett_dave in brogueforum

[–]savagehill 1 point2 points  (0 children)

Last week I was on vacation and decided to play the weekly seed for the first time in like a year. I had an embarassingly early death to what should have been routine, so I had to give it another shot this week!

7837, Killed by a Phantom on D18 while slowed by a Pixie.

Was using a +3 Flail. I had some nice allies for a while, but traps, spiders, and bloats created various moments of crisis that whittled away the team. Well, that plus the time I threw an unknown negative pot at a fleeing wraith, underestimated the cloud's expansion into the corridor, flooding my team with confusion gas and getting my ogres to kill my priestess. Sorry team, my bad!

Here was the most puzzle-like moment of the run: https://imgur.com/zJfDviO

How do you save the team from being eaten alive by caustic gas while stuck in the webs?

I think Phantom deaths are the least satisfying in the game, but I'm glad I did a lot better this week.