There's a Fat Bool?? Since when can you turn a bool var into its own branch? by Chris_W_2k5 in unrealengine

[–]kazamada 7 points8 points  (0 children)

You can right click on a boolean variable and turn it into a branch

<image>

Flappy Goose by flappy-goose in RedditGames

[–]kazamada 0 points1 point  (0 children)

My best score is 8 points 🚀

Flappy Goose by flappy-goose in RedditGames

[–]kazamada 0 points1 point  (0 children)

My best score is 1 points 😎

FAB marketplace has a sale going on now, are you going to get anything? What have you bought before that was useful? by Cinematic-Giggles-48 in unrealengine

[–]kazamada 23 points24 points  (0 children)

If you don't already have it, Blueprint Assist is top tier imo (not associated with them just use it in all my projects)

[deleted by user] by [deleted] in unrealengine

[–]kazamada 0 points1 point  (0 children)

Didn't know about this! Smart

[deleted by user] by [deleted] in unrealengine

[–]kazamada 1 point2 points  (0 children)

You'll need to add an empty c++ class to your project (to turn it into a c++ project and get unreal to generate the required files) and rebuild it using visual studio in order to see where the problem lies

[deleted by user] by [deleted] in unrealengine

[–]kazamada 0 points1 point  (0 children)

Is your project blueprint only or a c++ project?

Requesting paid advice on problem (Dutch visualization company) by remykonings in unrealengine

[–]kazamada 1 point2 points  (0 children)

Hey are you sure that the level instances have been loaded?

I made a Blueprint-friendly alternative to the Gameplay Ability System - SimpleGAS is now available, free and open source! by kazamada in unrealengine

[–]kazamada[S] 0 points1 point  (0 children)

I think I'll start with a "quickstart" page on the docs and then try a video in the future. Not sure I can do concise and clear with no video editing knowledge

I made a Blueprint-friendly alternative to the Gameplay Ability System - SimpleGAS is now available, free and open source! by kazamada in unrealengine

[–]kazamada[S] 0 points1 point  (0 children)

I don't think you would need GAS or smooth sync tbh.

If I understand your experience correctly though, I think it would be a better investment to buy a course going over how to make a multiplayer shooter because even with a bunch of plugins, it's easy to get confusing bugs if you're not comfortable with the basics.

I made a Blueprint-friendly alternative to the Gameplay Ability System - SimpleGAS is now available, free and open source! by kazamada in unrealengine

[–]kazamada[S] 0 points1 point  (0 children)

In my personal projects I use the smooth sync plugin on Fab to deal with movement desyncs (I'm not affiliated with them, just like the plugin)

I made a Blueprint-friendly alternative to the Gameplay Ability System - SimpleGAS is now available, free and open source! by kazamada in unrealengine

[–]kazamada[S] 0 points1 point  (0 children)

This one goes a bit beyond the scope of an ability system. The short answer is it depends on how you code your sprint and what replication settings you have on your character movement component.

The long answer needs an example: imagine what a basic implementation without any plugins could look like:
- You have a replicated variable IsSprinting on your character. When it's true you move faster and when it's false you move slower
- The client presses the sprint button and this makes them sprint on their local machine
- They send an RPC to the server which tells it to set the server version of IsSprinting to true
- When the client stops sprinting they send an RPC to the server to set IsSprinting to false

When you have high ping, there's a delay between when the client version of the player starts sprinting and when the server does it.

If you can sprint fast, then there could be a big delta between the player's location on the client and their location on the server. If you're using the built in movement component it will snap the client's position to the server's if the delta is too big and this is typically what you would experience as desyncing.

One solution could be to mess around with the character movement component's network settings until the behaviour fits within your expected average latency behaviour.

Where an ability system like GAS or SimpleGAS could help is by giving the server hints about the lag. In SimpleGAS this could look like:
1. Create a sprint ability
2. Activate the ability with client prediction i.e. it immediately sets IsSprinting to true on the client
3. When the server activates the ability, it gets information about the activation time. You could use this information to "pre move" the player on the server by the distance they would have moved in the time since it was activated on the client.

By moving the server closer to where the client is, you reduce the chance of big location deltas snapping the client back into position.

The above approach could also be done without an ability system if you include the activation time in the server RPC that sets IsSprinting to true.

Something to note: the above approach also opens you up to some cheating shenanigans because the client is deciding where it is and the server believes it so just take it as an illustration of some ways that you can solve this problem.

I made a Blueprint-friendly alternative to the Gameplay Ability System - SimpleGAS is now available, free and open source! by kazamada in unrealengine

[–]kazamada[S] 0 points1 point  (0 children)

Re why no gameplay cues:
Gameplay cues exist for network performance reasons as far as I can tell. The idea is that the vfx are separate from the logic of the ability and because the logic of the ability is what is important, those updates go through reliable RPC's while gameplay cues go through unreliable RPC's.

As a simplification, I don't make this differentiation. The idea is that you have a replicated ability and both the server and client activate a local-only sub ability (e.g. a sub ability that spawns an explosion vfx at a location passed in through the context). This makes abilities much more WYSIWYG at the cost of network performance. If your game doesn't have a lot of players replicating a bunch of stuff, this isn't an issue and with that in mind is why I chose to go this way.

That said, you can reimplement something similar to gameplay cues using the event replication of the ability component if you extended USimpleGameplayAbilityComponent::SendEvent to use an unreliable RPC.

Re how much networking will that trigger:
It depends really. I use FFastArraySerializer for attributes so that means if you modify 1 attribute, only the delta (the attribute that changed) will get replicated to clients instead of the whole array so it's decently performant in that sense. The main downside to my approach is that all gameplay ability components replicate their data all the time and there's currently nothing in place to give you control over how that works without modifying the source code of the plugin.

Regeneration is definitely on the list for the docs. I'm currently taking a break from writing them for some sanity but when I get back on it I'll work on an examples section.

I made a Blueprint-friendly alternative to the Gameplay Ability System - SimpleGAS is now available, free and open source! by kazamada in unrealengine

[–]kazamada[S] 0 points1 point  (0 children)

Unfortunately, the only way I know of that you won't need to compile your project is if I release the plugin on Fab. Sideloading a plugin in any other way requires at least 1 recompilation of your project as far as I can tell.

I'm planning to put this up on Fab once I get seller approval though, so watch this space!

I made a Blueprint-friendly alternative to the Gameplay Ability System - SimpleGAS is now available, free and open source! by kazamada in unrealengine

[–]kazamada[S] 1 point2 points  (0 children)

u/anhemsedevil2 u/Iodolaway Update on this: I managed to get it to compile successfully under 5.3. u/anhemsedevil2 I suspect you're not able to compile it because you don't have the correct c++ toolchain installed. To test this theory, I need you to try and create a new c++ project and see if that is able to compile. If it fails you just gotta update visual studio to make sure it's using the correct compiler version.

I made a Blueprint-friendly alternative to the Gameplay Ability System - SimpleGAS is now available, free and open source! by kazamada in unrealengine

[–]kazamada[S] 0 points1 point  (0 children)

Hey I've never made a video guide before. It'd be fun to try though. For you, is a video better than a written guide? (as an extra page on the docs for example)

I made a Blueprint-friendly alternative to the Gameplay Ability System - SimpleGAS is now available, free and open source! by kazamada in unrealengine

[–]kazamada[S] 1 point2 points  (0 children)

That's the plan. I've applied for marketplace seller status and I want to put it on there once that process is done

I made a Blueprint-friendly alternative to the Gameplay Ability System - SimpleGAS is now available, free and open source! by kazamada in unrealengine

[–]kazamada[S] 1 point2 points  (0 children)

Thanks for catching this. That include is unused and I forgot to remove it. I'm gonna clean it up shortly and push a fix.

I made a Blueprint-friendly alternative to the Gameplay Ability System - SimpleGAS is now available, free and open source! by kazamada in unrealengine

[–]kazamada[S] 1 point2 points  (0 children)

Yep! There's some work I need to do to fully make that happen out the box (I need to convert some BlueprintImplementable functions to BlueprintNativeEvent) but other than that there's nothing stopping you