- Видео 7
- Просмотров 246 692
Sacred Forest
США
Добавлен 2 фев 2024
Sacred Forest is an open world 3D pixel art video game set deep within a magical forest, guarded by the protectors. Join the community and watch as this game develops!
Struggling to Optimize My Open World Game
🎮 Wishlist Sacred Forest on Steam Now 🌳👉
store.steampowered.com/app/2864350/Sacred_Forest/
Please subscribe, like and turn on notifications if you enjoyed the video!
🔖 CHAPTERS
0:00 - Intro
0:31 - Camera/Player
1:31 - New Areas
2:42 - Current Performance
3:47 - What Should I Do
4:35 - Structures/Buildings
7:30 - Foliage
This is my seventh devlog for Sacred Forest -- an open world game developed in Godot. In this video I go over my performance issues and various ways of trying to optimize the game.
MultiMeshExtractor Tool: www.patreon.com/posts/multimeshextract-116842066
Test Scripts: www.patreon.com/posts/test-scripts-for-116843218
Spatial Gardener Plugin by Dreadpon:
github.com/dreadpon/godot_spatial_g...
store.steampowered.com/app/2864350/Sacred_Forest/
Please subscribe, like and turn on notifications if you enjoyed the video!
🔖 CHAPTERS
0:00 - Intro
0:31 - Camera/Player
1:31 - New Areas
2:42 - Current Performance
3:47 - What Should I Do
4:35 - Structures/Buildings
7:30 - Foliage
This is my seventh devlog for Sacred Forest -- an open world game developed in Godot. In this video I go over my performance issues and various ways of trying to optimize the game.
MultiMeshExtractor Tool: www.patreon.com/posts/multimeshextract-116842066
Test Scripts: www.patreon.com/posts/test-scripts-for-116843218
Spatial Gardener Plugin by Dreadpon:
github.com/dreadpon/godot_spatial_g...
Просмотров: 7 807
Видео
NPC Upgrades, Custom Camera & Effects in Sacred Forest | Devlog #5
Просмотров 7 тыс.3 месяца назад
🎮 Wishlist Sacred Forest on Steam Now 🌳👉 store.steampowered.com/app/2864350/Sacred_Forest/ In this Sacred Forest devlog, I showcase new areas, including the starting camp and training grounds, as I work towards building a playable demo. I discuss my world-building process and share optimization techniques like level of detail, occlusion culling, and custom zone loading to improve performance. P...
NEW Movement Mechanics in Sacred Forest | Devlog #4
Просмотров 9 тыс.4 месяца назад
🎮 Wishlist Sacred Forest on Steam Now 🌳👉 store.steampowered.com/app/2864350/Sacred_Forest/ Please subscribe, like and turn on notifications if you enjoyed the video! This is my devlog #4 for Sacred Forest an open world game developed in Godot. Follow along as I go over all of the changes I've made since the last video as well as how I implemented new wall running and dodge mechanics. Spatial Ga...
Revamping the Look and Feel of Sacred Forest | Devlog #3
Просмотров 13 тыс.5 месяцев назад
🎮 Wishlist Sacred Forest on Steam Now 🌳👉 store.steampowered.com/app/2864350/Sacred_Forest/ Please subscribe, like and turn on notifications if you enjoyed the video! Welcome back to the Sacred Forest devlog series! In this episode, I’ll be diving into the latest updates and enhancements I’ve been working on for my open-world action-adventure game, Sacred Forest. What’s New in Sacred Forest: 🔸 V...
First Characters and Zones in Sacred Forest | Devlog #2
Просмотров 23 тыс.7 месяцев назад
🎮 Wishlist Sacred Forest on Steam Now 🌳👉 store.steampowered.com/app/2864350/Sacred_Forest/ Please subscribe, like and turn on notifications if you enjoyed the video! CHAPTERS 0:00 - Cutscene 0:40 - About Sacred Forest 1:14 - Main Character 2:38 - New Characters 3:36 - Normal Maps 4:53 - Optimizations 6:27 - New World This is my third devlog for Sacred Forest an open world game developed in God...
Scaling Up My First Open World Game | Devlog #1
Просмотров 102 тыс.8 месяцев назад
🎮 Wishlist Sacred Forest on Steam Now 🌳👉 store.steampowered.com/app/2864350/Sacred_Forest/ Please subscribe, like and turn on notifications if you enjoyed the video! CHAPTERS 0:00 - Gameplay Intro 0:09 - About Sacred Forest 0:27 - Feedback 0:42 - Main Character/Visual Style 2:45 - Audio System Redesign 4:12 - Scaling Up My World 5:03 - Optimizations 7:30 - Plugins 9:26 - Zone Streaming This is...
Making My First Open World Game | Devlog #0
Просмотров 86 тыс.9 месяцев назад
🎮 Wishlist Sacred Forest on Steam Now 🌳👉 store.steampowered.com/app/2864350/Sacred_Forest/ Please subscribe, like and turn on notifications if you enjoyed the video! CHAPTERS 0:00 - Gameplay Intro 0:47 - About Sacred Forest 1:31 - My Goals 1:45 - Past Projects 3:08 - Visual Style 3:40 - Gameplay Feel 4:18 - How To Make Good Animations 5:03 - Fun Mechanics 6:16 - Game Setting 6:32 - Challenges ...
I love when people make new things and you good sir are making a great new things
i am in love with this!!! Now in the crazy idea to become a part time game dev. the rest of time, spend in learnig all needed for ai agent models in real life situations, low/medium income households. my dream is to make an educational like game with ai agents being ´tutor´ along with a simulation of the subject. i really love this game,gave me the boost to try this dream path!
Man, 2d pixelart characters in 3d environments are so weird and ugly.... The 3d looks good, why not make the characters 3d too?
The scenery and leveldesigne lack some art direction. They looks a bit dissassociated with each other
this is a bit off topic but is there a reason why your player character is wearing so little clothes?
those wood beams have way to much vertices from the outpost you show you need to optimize models not just how models are loaded.
What do you need 80 gigs of ram for?? :0
Idk but I downloaded it just in case :)
comon lets team up. i will decimate your high poly models and i bet they will not look that much diffrent than before.
Hah I wish I could just decimate them (it doesn't give a great result at least with the current topology), but I've been remeshing them and re-uv unwrapping/re-texturing them since this video launched. So far I've been getting anywhere from 4-40x reduction in faces without changing the look so I'm happy but it's definitely tedious lol
i cant wait to play this some day. it looks so awesome!
I know the simplest way to optimize your game: switch to Unity.
I used to use Unity a lot for many years when it first came out but I just didn't like the direction they went with their licensing where they were really pushing subscriptions instead of perpetual licenses, so Unity 4 was the last version I used. Over the years it's been harder and harder to trust large companies since making a game is a multi-year project and it really sucks when they decide to just switch things up when you're really far in development. I'm really happy with all of the open source choices that are available now so I'll make it work one way or another hah! :)
@@sacredforestgame Godot is not a great way to trust. I am not discussing about management issues, but about hypocrisy of Godot Foundation, which members are involved in selling commercial services to the engine. They are not interested in providing stable engine.
There are definitely things I don't like about the Godot engine. Every time I start a game project I always like to look at what options are available and what path is going to be ok for the specific project. When I started Sacred Forest, I felt like the version of Godot that I started with would be good enough to finish the project. Every time they put out an update and it has good features that improve the game it's just a bonus to me. While there are definitely some unstable things in Godot, it really hasn't seemed that much more unstable than other engines I've used in the past, especially for open source software. My goal isn't to use or make the perfect game engine that can create any type of game and run perfectly for every situation. Every engine has its downsides and my only real goal is to make the game that I want to make, which I feel like for Sacred Forest, Godot in it's current state is definitely capable of doing what I want it to and hopefully future versions just improve the experience. Also, since I have the source code, I can freely extend the engine and improve it for my specific needs if I ever run into any shortcomings which I already custom build the engine and have already created plenty of plugins to improve the development of the game. So overall I'm pretty happy so far with using Godot as the basis for Sacred Forest but I'm also open to use new engines/frameworks for future projects it just doesn't really make sense to switch mid development :)
Great video. I have one critic for you, the character looks out of place in this environment, it looks like you've placed Link in Skyrim, maybe less details in env textures would fix that
Interesting. Your geometry looks rather simple, so i wonder what does it look like in overdraw-viewmode? And one more: are the shaders used for grass & trees alpha-cutoff or alpha-blending and do they correctly render in the opaque pass with reading and writing to depth buffer?
She looks hot even in pixelated form
you have such a pretty project. im always jealous when seeing it.
Thanks! :)
Really enjoying this devlog series. Those log fences at 3:44 are probably not helping performance I think this game would benefit from leaning into a lower poly style. One thing that also stood out to me is the foliage on your trees. There's a lot of transparent pixels and presumably a lot of overdraw happening there. I feel like the leaves are possibly too high resolution and or at least that there's too much space between them in the texture which makes them look very noisy in motion. Also this is a matter of taste but I think the depth of field effect isn't helping performance and looks kind of intense. it could be worth trying to just have fog and no blur or at least turning down the intensity a little so distant objects aren't completely indecipherable. I really love what you're making here though and I hope you can find a good balance of graphical performance without having to spend too much time optimising.
2:22 Fed to the rules and I hit the ground running Didn't make sense not to live for fun Your brain gets smart, but your head gets dumb So much to do, so much to see So what's wrong with taking the back streets? You'll never know if you don't go You'll never shine if you don't glow
This video has valuable information, thank you for sharing, it's very much appreciated. Your game looks fantastic and I look forward to seeing how you change your game world for better performance.
Thanks! :)
3:40 looking at those meshes you HAVE TO loose atleast 90% of polygons on those log meshes. 😮
Hah! Yeah it's been on my todo list to go through every mesh and re-topologize them to reduce the poly count and clean up materials. The only reason I've held off is because the last time I worked on a number of meshes and updated the files in my project, when I reopened Godot it reimported them and there must have been a bug or something in Godot because it corrupted tons of my prefab scenes by pretty much randomizing which mesh was which and caused a huge amount of work remaking scenes lol. I'm just really hoping that is fixed since it has happened a few times :)
@sacredforestgame Nasty.... But my eyes dropped to 30fps just by seeing that wireframe 😂
My understanding of MultiMesh is that it can give you a huge performance boost if you're using it on sets of identical meshes where there are a large number of them visible at once. Any scenario where you have a large number of identical meshes but most of them are being occluded isn't going to benefit since a MultiMesh essentially treats all its instances as one mesh, so that occlusion is now only happening at a much larger scale. A 2m long wall segment made of individual logs would benefit from being a MultiMesh because the individual parts being instanced aren't too large and neither is the combined mesh. Doing it to the entire back wall of a house doesn't present any performance gains because looking at any part of that wall renders the whole wall rather than just whatever bits of it are in view. Things you could use MultiMesh for: rows of books, sections of fencing / railings, trees and other thin objects, floor junk (rocks, debris).
I tried testing MultiMesh in a lot of different combinations in my main game world (fences, rocks, various planks, decorations, floors, walls, trees, etc) things that were close to each other that would group together so they could be occluded/culled as one object. After doing a lot of testing (the video was just a couple of tests I ran) it seems it just isn't worth using multimesh at all unless you start getting in the hundreds-thousands of instances that will group together. Creating a MultiMesh with small groups of less than a hundred seemed to make things worse because each MultiMesh submits it's own draw call, whereas if you use individual MeshInstance3D nodes they automatically all get batched in the same draw calls. Even foliage, trees were almost better off as MeshInstance3D nodes if you have only a hundred or so within a chunk. The only reason I'm not going to do that is because it is just much more convenient to use the same system for all of my foliage (spatial gardener). So my main take away from my testing is that grass is the number one thing to use it for and potentially large swarms of things like schools of fish or massive amounts of birds (although animations are much harder this way). Books could be useful if you have a huge library but a small shelf probably wouldn't be worth it. I could be totally wrong hah! That's just from my own testing :)
@@sacredforestgame That sounds about right. MultiMesh3D seems to work best when you're rendering one hell of a lot of identical meshes: orders of magnitude more than most people are doing. About the only times I've used it has been more for convenience rather than performance: procedural props etc.
Ok but 80 GB of ram? Which angel did you mug? Otherwise, long awaiting your game! One of my most looked forward to wishlists.
I love it, you are inspiring me to start my own project, thank you.❤
Good luck with your project! :)
Cool project! I look forward to finishing this video after work!
I had to pause to do a double take at that log fence wireframe at 3:43. I'm sure there's an extra fps or two to be squeezed out of simplifying that particular topology... Jokes aside, great video as usual. Optimization for this kind of huge game world isn't a topic I'm looking forward to tackling if I ever get there. It's always interesting to see how other people are approaching the problem, and I appreciate you showing your stress testing process.
so cool man thanks for sharing
Thanks! :)
Impostors are another mesh optimization strategy for buildings and giant structures or rocks and such. You will need to decide the lowest possible system you are aiming to run your game, maybe get a separate computer with those specs and each build, see if you are hitting your desired frame rate. I've got 8GB ram with 1050TI GPU and an Intel i7, I can get up to 11 million polygons drawn on screen before seeing Unity drop frames. Can you also be suffering from overdraw? I know people get tripped up with that, when your foliage textures has alot of transparency but the render engine still draws information as if its still there. I've seen people actually increase performance with mesh based foliage for nearby foliage and then batching the far away low res foliage. Looks great so far!
Most drastic thing I've seen are by far your wooden village walls meshes, those are grossly high-poly for how they look Also I highly advise against using any hightmaps/depth maps, they look horrible in godot unless used with tiled stones or something like that, and even then only look good if paralaxed which kills performance really quick Great progress! Keep it up Also check out the latest video from Godot con on rendering, I remember they mentioned something about batch rendering shadows beings a huge performance booster in big open worlds, but I don't know if, when or since when thats been inside the engine already PS did you ever experiment with rendering the game world at a lower resolution to match it more with your character? might be worth a try :)
I wonder if you can force your editor camera to have a different LOD so you can zoom around easier? Like, some kind of @ tool with a if: editor
That''s an interesting idea! :)
ffs! the polycount on individual logs of that wooden wall... and then we wonder why Steam is full of unplayable shit these days
You need to upgrade your CPU, Jesus that thing is going to bottleneck your GPU by about 29.9%
Hah yeah I'd like to but I'm pretty broke lol. I built this pc in 2018, the only reason I have a newerish gpu is because my vega 64 is d e d :)
online bottleneck calculators are not accurate
@exaq "by about" either way his cpu is way behind his gpu you get the point
Remember that collisions can also get very expensive, so it's important to make sure they are also optimized, preferably just a box, sphere or capsule where it's possible
Collisions can be cheap, if they are implemented properly. E.g. implementing static mesh colllisions. Godot doesn't have a concept of a truly static mesh, where everything, including memory allocation, collision and lighting, is optimised. You can exclude unnecessary collision check between immobile meshes with collision masks, but even so, you wouldn't get the same speed as if it was designed with static meshes in mind, because that means you still have to check through flags which objects should collide or not.
3:44 bro you need to make those pillar mesh low poly!, that's too much tris! going there. Make a low poly bake those highpoly details as a normal maps. It should look fine as before.
I wish there was a node in godot to just handle that for you - auto LOD or something, but not loading/compiling the huge mesh into the running game
Ah, yes, the journey of testing several alternatives only time revert back to the intial method. But, I agree with the sentiment "the more you know, the more you know."
A tale as old as time! :)
Around 10:08 there is a flash of white light on the screen, when making my game I had the same graphical issue to varying degrees sometimes the white light would consume the whole screen. Do you know what causes this? Is it just an inherent problem with Godot or is it something we're doing that's causing it?
I didn't have the same issue in Godot 4.2 (it was a black hole instead of a white hole at least on linux, windows was fine) and it seems to be worse on objects where I use visibility range. I haven't spent much time trying to figure it out yet but I'm sort of just hoping it's a Godot bug and it is on my todo list to look into hah! :)
@sacredforestgame let me know if you figure it out please
I've been remeshing/re-uv unwrapping/texturing all the models in Sacred Forest to reduce the poly count and I noticed the flashes went away when I dropped under around the 8 million triangle count (around 25 million vertices). I can't say for sure but I'm guessing the flashes happen when there is just too much geometry being displayed and so maybe it is overflowing a buffer or something. Still I can't say for certain if it is just from the retexturing or the reduction of geometry but it seems to be fixed for me now hah
if it has modules and a command bar like roblox studio, you should make a chunk tool with a selection brush or a snapper like minecraft block selection (this could let you edit datavalues for areas of the map, using perlin noise to generate weather from forecast tables)
you made in godot?😯
Yep! Right now I'm using Godot 4.3 :)
upgrade a to 5800x3d would be huge for you
Just got to get some extra dollary-doos first hah! :)
I think a major issue is your mesh topology. Those pillars at 3:45 and the house at 7:20 are way too dense, even for the highest LOD. Every single vertex is between 16 and 48 bytes, with larger meshes being several megabytes total. Since they're rendered as separate meshes, every single one of those pillars sends a few megabytes from your CPU to your GPU on EVERY FRAME. It adds up extremely fast. People fixate way too heavily on rendered objects and batching, but ignore the underlying framerate-limiting property: data throughput. Reduce your mesh complexity by decimating vertices and stripping unnecessary channels like vertex color. I promise you'll get much better results. At the end of the day, the ONLY thing that matters is how many bytes are sent to the GPU.
This comment is on point, I hope he sees this.
Yeah I think you're spot on! I was going to simplify a lot of the meshes eventually (and redo a lot of the materials/textures) but since I can do that any time without having to rebuild the world I wanted to see if there were some techniques (multimesh, rendering server, etc) that would help with performance since I would want to know that early on because it would effect how I make the rest of the world :)
@@sacredforestgame idk if uve alr done this but could also see how baking higher res normals onto lower poly models looks if ur resistant to comprimising lighting detail
Isn't batching (and instancing) direct and main ways of reducing data throughput? It's like youre saying "people are way too fixated on X, when they should actually be focused on Y which is achieved by doing X and a bunch of other things"
Im a professional game developer and I immediately scrolled down to write this comment when I saw how dense the meshes for those logs are in 3:45. A major factor for why a lot of games look good and still run well (most of the time) is smart and well thought-out approach to asset creation and optimization.
Always love it when devs are in their optimization arc
I think I'll be in the arc for a while hah! :)
The curse of 3d grass and trees
It can always use more grass and trees! :)
I hate doing optimization but seeing others do it is so entertaining and satisfying seeing smart ways to claw back performance
You can make the windmill turning lead to other things that might advance the story, idk just a thought
Nice 🍻
Thanks! :)
I think the mix of art styles is really cool, and it makes the game stand out more! For me it’s a positive! But I’m still not crazy about the design of the main character..
I have some suggestions: You should maybe have it so that when objects load in, they don't instantly pop in. You could make it so that it is like Breath of the Wild where they are loaded at 0% opacity and then fade in quickly. At 2:02 you can see the trees on the left instantly load in. Another suggestion I have is that you could make the lighting a little better inside structures (like in the windmill at 2:20). You should also add some ambient insects like flies, fireflies and butterflies to add to the theming. I hope my suggestions help!
Take a shot every time you hear "MultiMeshInstance3D Nodes"- I love optimization videos like these, so fascinating!
MultiMeshInstance3D Nodes! :)
have you considered more pixely textures like valheim? normal maps still look good not even really a suggestion just wondering, it looks good how it is
I definitely did consider it but when I was deciding on how I wanted the style of the game to look I felt like most 2.5D Pixel Art/HD Pixel Art games also make the world and everything in it pixely looking and it totally makes sense to do that. I know from an artist perspective it really doesn't make any sense the way that I'm doing it for Sacred Forest but I'm not an artist and I personally like the mix of styles. I also feel like it will help in some of the scarier parts of the game :)
As an artist, throwing in my 2 cents, but I personally like the juxtaposition between the more realism based scene, environment, and monsters as it gives a personal style to the game, and gives a slight uncanny valley feeling esp when you enter the foggy forest! :3
First
Welcome! hah :)
🎮 Wishlist Sacred Forest on Steam 🌳: store.steampowered.com/app/2864350/Sacred_Forest/
It would look even better with 16 directions. 😈
Love this. Seen a lot of people talking about the 2D / 3D being weird, probably because they are not used to seeing it. My opinion, Stylized game world / environment would look great with 2D pixel art. BUT, either way you're doing an amazing job and it looks amazing so far :)
So excited to play this. Keep up the awesome work man :)
3:50 a small tipp, the tutorial should be the last thing you work on with your game that isnt stuff like polish or localization, its way easier than doing at the start because once the game is more or less finished you have a way better understanding of what you need to teach in the tutorial and how to best do that