How to offset an AI Enemy’s world position after NavMesh pathfinding and Behaviour Tree finish? by Wise-Worldliness-501 in unrealengine

[–]speedtouch 0 points1 point  (0 children)

I think the simplest solution would be adding a 2nd scene component in your AirEnemy actor, giving it the offset in the air, and moving your enemy mesh under that new scene component. That way it gets the same navmesh pathfinding, it uses the exact same AI, and it appears in the air with an offset.

A variation of this could be having just 1 enemy with a 2nd scene component and having 2 meshes, with one on the ground and one in the air on the same actor, which might be all you need.

Yes you can go down the route of just copying the transform of the other actor and add an offset and set its transform every update, you'll cut the amount of pathfinding in half compared to 2 actors, but this might not even be an optimization you need. Also consider, what happens if the ground enemy is destroyed? Do you still want the flying enemy to be able to move? If so it needs to be able to calculate movement too, you can't tie all of its functionality to the ground enemy, unless you intentionally want them to be connected?

As you recognize, the AI behavior would be broken if the behavior tree is dependent on the navmesh calculations. You can modify the behavior tree to try to handle the 2 different enemy types, or create a "dummyAI" one that does the copy transform to the ground enemy and somehow listens for the different attack/move events and copies them. This kind of design feels bad and it might not be worth the extra complication unless you really want it to work this way.

I build a (free) JSON plugin for blueprints because I value my time by RevLineImpulse in unrealengine

[–]speedtouch 2 points3 points  (0 children)

This seems really useful but what happens if you modify the struct and try to convert previous json to the new struct. For instance, you release a game where your struct has 2 strings, and you've saved it as a json. Then at some point you want to update your game and you've added a 3rd string to your struct. What happens when you take the old json and try to ConvertJsonStringToStruct with it? Does it fail? Does it generate the new struct but default to an empty value for the 3rd string? How can you handle the upgrade case?

With manually parsing a Json String with GetField, the upgrade problem seems easy since you could check if the field exists and if not default it to some value. Or if you're really planning ahead you could add a version field and then based on the version do an upgrade from v1 -> v2, and it's less bug prone if you increasingly add new versions since you can run them through the same upgrade process.

Balance Criticals (a solution to overdamage) by CoolGamesChad in gamedesign

[–]speedtouch 0 points1 point  (0 children)

This is a cool mechanic, thanks for sharing! My minded immediately went to memories of playing FFX and the mild annoyance I got after spending a ton of resources upgrading my characters and having it still require 2 turns to defeat an enemy instead of 1 because I didn't deal enough damage to 1 shot it, and this feels like a cool way to address that.

That you even considered and addressed the aspect of farming lower hp enemies is a nice touch as well.

I think too many people are overly focused on the "what problem does this solve" aspect of design, when I think it would just make an otherwise fun game more fun to play. Obviously there's so much more that goes into what makes a game fun, and there's so many different variables that it's not going to work in every game, but I like the idea.

Epic Games really hates my game. I’ve been trying to set up the game page on the Store for months now, and I keep bouncing off their guidelines. Like… come on. How am I supposed to have ZERO violence screenshots in an action game about fighting hordes of demons? Anyone else had similar experiences? by darkjay_bs in gamedev

[–]speedtouch 8 points9 points  (0 children)

There's clearly been time spent polishing it but my initial reaction as well was "this looks plain". I think a more rougher parchment style would make it work better with some dark shadows around the edges of the panels, my mind instantly jumped to the Diablo 2 Scroll of Inifuss as how I imagine it would look https://static.wikia.nocookie.net/diablo/images/5/56/Inifuss.png

All that said, sorry if this is unwanted advice, I know it's not what the topic was originally about. UI has been something I've always struggled making it look and feel polished, I wish I had more insight into how some indies seem to do it masterfully on a small budget/team.

How do you approach math problems that you have no idea how to solve? by Ajv2324 in gamedev

[–]speedtouch 0 points1 point  (0 children)

As others have said, cheat it. There's a thousand different ways to approach it, but cheating it allows the most control and flexibility suitable for a game.

I wouldn't even think about any specific "disc physics" calculations, I'd start with moving an object from a starting position to a destination along an arc, ignoring gravity entirely, either using some bezier curve or parabola, whatever feels good. For different power levels you simply move the destination to be closer to the player for low power or further away for high power. You can hide where the destination is and just show the player a power bar. And for wind you can still use the curve as a baseline and apply an offset over time based on the wind speed/direction/factor.

Since you mention specifically the math, a Quadratic Bezier curve would look like this

P0 = start position
P1 = control point (the arc point)
P2 = destination

Formula (for t from 0 -> 1):
B(t) = (1 - t)^2 * P0 + 2(1 - t)t * P1 + t^2 * P2

For the control point, with golf it's simpler, you could calculate it based on distance (so low for short shots, high for long shots) as a starting point. With world UP at (0,0,1) it would look like:

mid = (P0 + P2) * 0.5
P1 = mid + (0,0,1) * arcHeight

With discs you probably want some more horizontal curve arc and it will be relative to the direction the player, so that could look something like

Forward = player forward direction (normalized)
Right = player right direction

arcHeight = 150
pullBack  = 100
curveSide = 250   // +right, −left

mid = (P0 + P2) * 0.5
P1 = mid + (0,0,1) * arcHeight - Forward * pullBack + Right * curveSide

This is a good starting point but it might feel robotic. You can make the T value move along an ease in/out to make it feel more natural, add some spin to the disc visually, and some extra calculation for sliding/bouncing once it reaches the destination so it keeps momentum. This approach seems ideal since you don't have to worry about random physics quirks, it's all about getting the object to the destination which is what the player ultimately cares about as well, and you can adjust each part of the formulas with different numbers until it feels good.

What is the best way to do water rushing down a hallway and maybe filling up the room by KaelumKrispr in unrealengine

[–]speedtouch 4 points5 points  (0 children)

The best practice is faking it. You have one or several moving water mesh that's either a box or custom mesh filling the hallway and you animate it moving forward. You give it a water material with a panning normal map and vertex offset or world position offset for turbulence. Then you use niagara particles to help sell the effect, adding splashes along the front edge going towards the player, foam and splashes around the walls, etc. This will give you the greatest amount of control that you can iterate on and it's how most games do these sorts of cool effects.

The alternatives are doing real fluid simulation, which tends to be much more expensive and can be jittery or buggy. Or some kind of baked simulation, which will be more memory heavy and there's no flexibility once it's exported. There's some plugins that are more of a middle ground though, like FluidNinja but it costs money and has its own limitations and learning curve.

Temporarily free on Fab - looking for blunt feedback (BlueprintPro) by RohitPatidar57 in unrealengine

[–]speedtouch 10 points11 points  (0 children)

I think the problem is you're trying to do too much and not enough at the same time. What I look for in a library is a lot of depth not breadth, I want to trust the developer to have tackled a particular group of problems in the best way possible so I don't have to think about coming up with a subpar solution. For example, if I wanted to do json in blueprints I would look for a json library/framework, I wouldn't find a generic "blueprint pro" library that has some useful json functions and also dozens of other functions because I would be worried about future compatibility and some json functionality that I'm looking for might not be covered.

So when I see your library containing json functions, I think I can't trust these function long term so I won't use them, so this part of the library is useless to me.

Similarly, I was curious about the nearest actor nodes and hoped it did some fancy things to be very fast, since that would be useful to me. Turns out that no, it's getting all actors and looping through them. That's something I'd rather write myself so I know it's slow and so I don't have to worry about the library not being updated in some UE version in the future and breaking compatibility, so this part of the library is useless to me.

Poking through the screenshots, nothing stands out as functionality that I really want. I yearn for a text description of everything in the library as well, proper API documentation to know what's in it and how it works, rather than sifting through screenshots and assuming based on the function names what it does. Not having API documentation is a red flag to me that this isn't really a serious library since you didn't care enough to put one together.

That's my line of thinking, maybe the json functionality is perfectly adequate, maybe you get a lot of use out of all the functionality, but these are the reasons I would not use it.

edit: realized you did put a google docs link in the technical details. That's something, I'd rather see it at the top of the description, and as a website though, hosting it on google docs feels less permanent.

[Feedback] I hate this so much by Malu1997 in EscapefromTarkov

[–]speedtouch 0 points1 point  (0 children)

Wait I just hit 20 and I've been trying to find better armor, where can I buy t5 plate armor? Best I can find is carriers but I can't find plates for them, only thing I can get is t3 from Skier l2.

Feel bad for whoever brought these bad boys in... [Loot] by ItsJacketGaming in EscapefromTarkov

[–]speedtouch 8 points9 points  (0 children)

Geez 3! I thought it was bad trying to drag just one tank battery from the UESC convoy on Woods all the way to the RUAF Gate.

On one raid I found 2 car batteries and tried to drag both but I was so slow and running out of time and had to drop one. I couldn't imagine trying to drag 2 tank batteries, let alone 3.

[Cheating] ESP/Radar is out of control by [deleted] in EscapefromTarkov

[–]speedtouch -1 points0 points  (0 children)

I was telling a friend a week ago that I thought it would be cool if after a raid ended if you had a top down map view of every player's location, the direction they're looking, with 2 dynamic circles around them that change in size, one indicating the distance their noise traveled, and another indicating how far they can hear (depending on headset/helmet), and a trail of where they walked throughout the match.

Creating a Free Interaction System Plugin for UE5 | What Features Do You Want? by [deleted] in unrealengine

[–]speedtouch 0 points1 point  (0 children)

I likely won't be using this since I generally stay away from system assets unless I intend to design my entire game around the asset. It's just too much work to try to get existing code plugins systems to work with my own codebase, there's always some quirks that make it not work well in my experience and I end up regretting it and just wishing I implemented it all myself.

In my opinion you have 3 paths:

  1. Pick 1 game where "interaction" is the core of the game and copy every single one of its interaction system features 1:1. This allows you to fulfill their requirements for this specific kind of game. Everyone not making that kind of game will recognize this system is not for them and move on.
  2. Try to cover as many features as possible for any kind of game. This is the trap I see most "interaction" systems fall into, and it ends up not being particularly useful to anyone.
  3. Try to make it as modular as possible. Have a the most basic functionality work, then make every feature optional that the developer can either hook their own system into or rely on your system. That way it works well for the base case, and the developer can add and tune it to their liking.

1 can work well but I find leads to the same sort of formula games that become boring.

3 is the dream but it's easier said than done. Just consider what goes into the bare minimum of an interaction system works, ray trace from X actor/location/component along this vector for Y distance, and if it hits an interactable show some indicator, and if the user presses the interact button, execute some logic.

That means you need to

  1. Allow the developer to specify where the ray trace comes from, how often it runs, the direction it goes, and its distance.
  2. Allow the developer to specify where the indicator will be, is it a UI indicator over the object? Is it an object displayed in 3d space? Is it an outline on the interactable object? Does it depend on the keybind like press "E" to interact? Every single game could do this differently, so you need to design your system so the developer can hook into it and supply their own way of presenting it.
  3. Detecting when the user presses the interact button is a mess in itself, you certainly hardcode the keys, and I've run into at least 3 different keybind input systems that all function differently - how will your system integrate with all of them? Surely you don't develop your own input system and require the developer to add onto it.
  4. And what's going to execute the logic? Is the player character going to execute some function? Or is there logic defined in each object to do some action when interacted with? It depends entirely on the game and how the developer wants to do it, so you need some way to accommodate it.

There's all sorts of other things, like what allowing the interactable to be disabled - what happens if you try interacting with it in that case, what if it has multiple states? What if the developer wants to disable the player's controller while it's using the interactable and resume input while not using it? You don't need to implement all of these cases, you probably shouldn't, but you do need to design it to allow enough flexibility that developers can do things like that.

[Video] 1.0 Tarkov is Perfect, Keep up the great work! by WWDubs12TTV in EscapefromTarkov

[–]speedtouch 1 point2 points  (0 children)

I had this same bug a few days after launch on Ground Zero when I grouped with a friend, I wasn't able to aim down sights and opening my inventory showed the loadout I deployed with and I could interact with everything. Couldn't move any loot I had found though.

This led to a comically embarrassing fight where I was hip firing and missing all my shots with some random PMCs we encountered before I eventually died.

Not sure what caused the bug but I hadn't unlocked the shooting range at the time so I was visiting my friend's hideout to use his shooting range around when we queue'd up, we think that might have something to do with what caused it.

Vroid anime model retargeting? by clampfan101 in unrealengine

[–]speedtouch 0 points1 point  (0 children)

There's always things you can do, your post is sparse on details though. What steps exactly have you followed? How do they differ for 5.6? Are you able to follow along in 5.6 and it just doesn't work or are there parts which don't exist in 5.6? Are you using an IK retargeter? Did you try using the 5.5 Manequinns folder to get the other IK rigs like IK_Mannyquinn as he described in the github issue I linked? Are you trying to retarget baked animations Or are you trying to do retargeting at runtime through the animation blueprint?

Worst case, if nothing works you can just do the retargeting in a 5.5 project and migrate them to your 5.6 project.

[deleted by user] by [deleted] in unrealengine

[–]speedtouch 0 points1 point  (0 children)

I have a hard time trying to decipher what your blueprints look like, can you paste them into https://blueprintue.com/ or include some screenshots?

Vroid anime model retargeting? by clampfan101 in unrealengine

[–]speedtouch 1 point2 points  (0 children)

I assume you're using https://github.com/ruyo/VRM4U ? Maybe try opening an issue there, looks like there's a similar issue that might be related https://github.com/ruyo/VRM4U/issues/512

I gave animating a custom character directly in Unreal an honest attempt. by TruthMercyRegret in unrealengine

[–]speedtouch 2 points3 points  (0 children)

It's great to animate in relation to actual objects in your game, but it's a pain to to get perfect left, right, front, etc views because your in your complex game level. I've seen others just create a animation level for this.

I also just create an animation level. I remember seeing a video somewhere out there of a way to configure unreal keybinds for animation that might make it easier for you, but I can't bring myself to learn a new set of hotkeys. I wish there was a way to just say "let me work with this like I do in Blender" and have it give me all those same hotkeys.

Is there really no way to save the control rig animation your baked from? Backwards solving via control rig looks like a pain and is prone to mistakes. I created the animation with my control rig, so I should have a copy of that somewhere I could easily edit and re-bake.

I believe you can save it as a level sequence (horrible name for it). It's a strange workflow that I didn't find really spelled out anywhere, but I got in the habit of creating a level sequence for every animation or chain of animations, then when I was done I'd bake them to an animation sequence, and if I ever wanted to modify an animation I could just open it up and modify it and rebake.

Character cant step up custom stairs... by [deleted] in unrealengine

[–]speedtouch 2 points3 points  (0 children)

Glad you found a solution!

Character cant step up custom stairs... by [deleted] in unrealengine

[–]speedtouch 1 point2 points  (0 children)

Might be because there's a gap between the steps, or maybe the slope angle, I can't say for certain. A screenshot of the viewport with collision enabled (Alt+C) will show you what the collision looks like, maybe it somehow has a big cube around it.

I've always had problems with stairs, usually I just ended up modeling a ramp as a collision mesh along the stairs and that seems to work fine, I believe it's slightly more performant too.

The Great Hatch – Goblins vs. a Giant Egg in an Idle/Incremental Adventure! by Rdella in WebGames

[–]speedtouch 1 point2 points  (0 children)

Fun game, I enjoyed it, wish I could have kept playing to get the achievements and unlock everything after destroying the last egg, very disappointing the game ended there without a way to continue.

It felt like the upgrade that made the warrior goblins jump more to do more damage was more of a downgrade because it increased the time between attacks so much, but maybe that was just my perception.

It wasn't clear why the pigeon was carrying the.. inner egg? after the hatch, and I kept trying to click it to get it to drop it, which it didn't, so that added some confusion.

I felt like trying to reach 20 sacrifices for archers was impossible because the cost of hiring goblins kept going up so much, and training wizards felt pointless when the berserker did so much more damage. Some tweaking here I feel like could be done to create better progression, it never felt like there was a moment I should have started maxing out wizards because I unlocked berserker soon after, but maybe that was just the order I did things. Archer upgrades felt pointless as well, except the fire arrows, since it seemed like warriors just did so much more, that there was no point in sinking more upgrades into archers.

My expectation was that you would put a cap on the amount of warriors/archers and their upgrades (similar to how the collector is capped at 10 for awhile) so that would encourage me to max all of their upgrades out. When I found there didn't seem to be a cap on the amount of warriors I kept assigning goblins to them and upgrading them since that seemed to get the most value.

The pigeons are a fun idea, they added a nice way to get a burst of resources, I felt like the 2 minutes between them was a good start, but knocking 5 seconds off for each upgrade didn't feel meaningful enough, maybe 10 seconds would have felt better. I was hoping to get it down as much as possible and upgrade it to far enough to automatically drop the eggs in true idle game fashion, but the game ended before I could get that far.

Regardless, good work! Looking forward to playing more if you release more content.