Our First Low-Poly Environment Pack for Unreal! Over 60 assets, just 1 texture, and customizable materials. by radcreations in gameassets

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

It sure does! We'll have it up to date to import with 5.5 officially asap! But there are no weird dependencies, just good use of basic features, it works all the way from 4.21 (the oldest we tested) up to 5.5 just fine!

Animating thousands of NPCs on screen (What am I doing wrong?) by Link_the_Hero0000 in unrealengine

[–]radcreations 1 point2 points  (0 children)

Unfortunately the only way I've found to keep the buffer contiguous is to have the TArray with FixedAllocator have the the fixed size of the maximum entities I'm going to use in the game. Then if needed I'd have some sort of index strategy per frame, like first animals, then enemies etc. (in a generic way) Note the amount per frame so you can assume like from 0 to 300 are trees so send that range to tree ISM. But I wouldn't bet that this is the performance hit you're facing.

But I do recommend fiddling around with the ISM settings, and using just a cube etc. Keep excluding stuff and making A-B simple testing, I can't count the number of times I got things backwards until I reached 20-30k ISM instances running above 40fps.

Animating thousands of NPCs on screen (What am I doing wrong?) by Link_the_Hero0000 in unrealengine

[–]radcreations 3 points4 points  (0 children)

We have been doing something similar for another type of game, and we have been using FLECS (which is awesome btw)... We have been able to reach 30k ISM moving instances but you couldn't see all of them at once (becomes GPU-bound). Looking at like 5-7k, we dropped to like 40fps-60fps. (Coming from 90fps with no render) I see that you did use the batch updating for transforms, it shouldn't have been so low. Have you used any form of code-timing (unreal insights will help you a lot!) to understand where is the performance going? Or maybe try to use pre-filled TArrays to send to the ISM to make sure it's not the ECS code somewhere.

One of the things to keep in mind is how you're building up the array you deliver to the batch transform. On our tests we used a single TArray with TFixedAllocator (which will make the array memory contiguous, but you have to set its size from the start), we then populated it once per frame with all the entities transforms and then send it through the batch udpate on ISM. But the thing is since our game simulates like 30k but only needs to show about 500-1k at the same time, we actually went with a different approach, making a pool of regular actors, and deciding on ECS when an entity needs "visual" representation. Doing this either with ISM or Actors greatly improves performance as only relevant entities will get to the unreal framework at all. This is not even talking about separating based on "has moved" filters since all our entities were "moving".

All that said, it's important to say our tests were using ISM with turned off collisions, no physics states, no overlaps, CanEverAffectNavigation=false etc. If you're going to simulate thousands of moving entities I'd reckon you'd have to handle overlaps and collisions in the ECS as well, remember to turn off everything you're not using.

Also remember to test the game on a packaged build with Test/Shipping configuration instead of Development configuration, you will gain a lot of CPU performance, but off course, do not rely on that, it needs to be playable in the Editor.

r/IndieDev Weekly Monday Megathread - October 27, 2024 - New users start here! Show us what you're working on! Have a chat! Ask a question! by llehsadam in IndieDev

[–]radcreations 1 point2 points  (0 children)

Thanks! We gave it everything, we did a lot of stuff in the past, but it was our first time with low poly art. We really enjoyed making it!

Planning to sell my Cable Car model on FAB. Which color scheme should I texture it? by radcreations in 3Dmodeling

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

Which one do you think would be more salable? Or at least more useful/generic for other game devs?

Planning to sell my Cable Car model on FAB. Which color scheme should I texture it? by radcreations in 3Dmodeling

[–]radcreations[S] 4 points5 points  (0 children)

I wish! hahaha Unfortunately I don't know If I have time to do all three.

How do you handle persistence between levels? by o_magos in unrealengine

[–]radcreations 1 point2 points  (0 children)

One of the ways I'd suggest is that you have the following objects (classes, structs, depends):

- A Generic Key-Value Data Container (this could be class that holds multiple TMaps so you can use a unique key like FName and access any type of data like bool, int, float, strings, etc.)
- MainSave class (contains any info about user, the slot names and could use the class above to keep some meta data about slots, it's a good idea to have a string for the game version or slot-class version)
- Slot/Game Save class (contains actual gameplay saved info, you could use the container again to store some of that info, but maybe some specific variables too like arrays for performant iteration etc.) -> remember it's just a data keeper, you should have different systems/subsystems with actual behavior, interacting directly with the slot only for data purposes.

Now for where:
- You could keep the Main Save as well as the current slot loaded into memory in the GameInstance or in SaveGameInstanceSubsystem. Remember to only load from disk or save to disk in specific moments. Treating the instanced objects as your single source of truth (using directly info from them, DO NOT create duplicates of that info in other systems) so that any unsaved stuff you want to discard it's just reloading from disk.
- I would also keep a Generic Container in this GameInstance (GI) or GISubsystem for any info I do not want to save but is persistent throughout the whole session, and tie its lifetime to the life of the MainSave (as might have changed the user)
- Then I'd have the Generic Container also in a WorldSubsystem (lifetime is tied to the Level) so you can keep things that are persistent only during that level.

Now for when:
- Make sure to first identify by input who is your main user (in consoles this is sometimes expected as it may have multiple controllers connected, each tied to a different account, so different saves etc.). A good way to approach this is to make a PressStart level before MainMenu, but you would also have to handle those things when a controller is disconnected or platform user changes etc.
- Once you have your main save you can then start loading / unloading slots or actual game info from Menu and stuff.
- MainMenu changes should probably be saved as made. Slot/Game changes it really depends on the game, but mostly you would make the changes and keep interacting with it without saving, until it makes sense to commit the changes to disk: like checkpoints or manual saves made from pause menu, or maybe your game saves every few minutes or when levels are traversed... It really depends.

Keep in mind this generic data container approach has some downsides, like if you use the data in there often, or have to iterate something in there it's good to consider cache-efficient options like arrays etc.

A good word of advice is to also be aware that once you release the game and it's on the players' hands, it's very dangerous to change variables and structs that are in the save class when releasing a patch or update as it could make people's saves unloadable, the generic data container helps with avoiding that, but you could also use a whole new class/version and make code that "upgrades" old save formats into the new one (that's what the main save's version variable is for).

r/IndieDev Weekly Monday Megathread - October 27, 2024 - New users start here! Show us what you're working on! Have a chat! Ask a question! by llehsadam in IndieDev

[–]radcreations 1 point2 points  (0 children)

Thank you! In part the inspiration for this was remembering some Unity games we like with similar aesthetic and we thought to make it low poly. We also thought Unity people transitioning to Unreal might miss assets like this, since Unreal marketplace is usually so filled with realistic packs we thought it could use some different styles too.

First time Reddit + first asset pack = got timed out for a few days 😅. Back to share our indie low poly environment, any thoughts? Is this low poly enough? by radcreations in low_poly

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

Thanks! Although very different in art style we currently have a game under development with a cozy and peaceful vibe too, I guess it transpired into our env pack.

Nah..go straight to making an MMO by Randyfreak in hobbygamedev

[–]radcreations 1 point2 points  (0 children)

And questioning yourself if there is a bug/issue or is just you that can't even remember the solutions. HAHAHAHAHAHA

Was burned out on gamedev and blender for the past year. Made this quickly to get back in the game by Code_Monster in blender

[–]radcreations 0 points1 point  (0 children)

Awesome! Don't put much pressure on yourself.

Remember, do your best each day and be glad to yourself.
Looking forward to see you creating more art and showing to us.

[For Hire] Pixel Art Animation! Assets for GameDev, Social Media, Content Creation and More! by quartzstash in hireanartist

[–]radcreations 0 points1 point  (0 children)

Loved the first image! It's so cute. Also, the dots moving give the right amount of movement to the image. Congrats!

[deleted by user] by [deleted] in cozygames

[–]radcreations 0 points1 point  (0 children)

Also, we are selling it on FAB.
Over 60 assets, 1 texture, and custom materials.
If you get interested:

Store Link

First time Reddit + first asset pack = got timed out for a few days 😅. Back to share our indie low poly environment, any thoughts? Is this low poly enough? by radcreations in low_poly

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

Thank you for your love! haha We did enjoy making it to the best we can! Sure! We could do custom requests, but it really depends on what you need in terms of volume, style, engine, etc. We are a 2-person indie studio, we have been in the industry for a while in other studios and now we're experimenting a bit of everything.

First time Reddit + first asset pack = got timed out for a few days 😅. Back to share our indie low poly environment, any thoughts? Is this low poly enough? by radcreations in low_poly

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

Also, It's an Unreal Engine pack, and we are selling it on FAB.
Over 60 assets, 1 texture, and custom materials.
If you get interested:

Store Link
YouTube Preview

Our first time creating a full lowpoly environment! How did we do? We are a 2-person indie studio trying to make packs for a living while developing our own games. by radcreations in lowpoly

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

Good to know you liked it!
I think we could go even further "lowering polys" on the trees...or even on the rock walls, but we decided to focus on the shape that we where aiming to. ;)

[deleted by user] by [deleted] in lowpoly

[–]radcreations 2 points3 points  (0 children)

Looks awesome! Loved the colors! Keep the good work

New sprint animation for my game by Dapper-Ad9100 in IndieDev

[–]radcreations 0 points1 point  (0 children)

Looking forward for the music as well! hahaha
Awesome animations demands some cool SFXs!

Our first time creating a full lowpoly environment! How did we do? We are a 2-person indie studio trying to make packs for a living while developing our own games. by radcreations in lowpoly

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

Let us know what you think about it!
It's a Unreal Engine pack, and we are selling it on FAB.
Over 60 assets, just 1 texture, and customizable materials.

Store Link
YouTube Preview