followed this awesome tutorial (https://www.youtube.com/watch?v=4yWgiL-dfmg) to add custom mesh objects into minetest. had to learn how to use Blender. found some low-poly boulders on cdtrader.com website https://www.cgtrader.com/items/3097045/download-page and imported them into Blender. resized the meshes down to be compatible with minetest specs and exported as .obj file, then coded in a new mesh type node in minetest to use this new object. and it actually works!
still learning basics of Minecraft modding. brings back memories of my java days from college. the challenge i'm seeing right now is the lack of minecraft api documentation. yes i have access the view the java code of all of minecraft and it's items and assets, but documentation is limited. the yt video tutorial https://www.youtube.com/@ModdingByKaupenjoe is awesome and a great start, but he's giving me a fish (copy-this-code-to-make-this-type-of-mod), and not showing me much how to fish (not much explaining underlying variables and functions being used).
there are also some limitations on how far you can mod minecraft. only certain UI elements can be add/modified and can only put positioned a certain way, adding more game mechanics like thirst, disease, etc will be challenging, etc. with enough determination, i can figure it out but due to lack of mc modding api and documentation, it will be rough.
back in 2016 i was modding Minetest (https://www.minetest.net/) which is an open source 3D engine meant for modding from the ground up. it's built on c++ but uses the Lua scriptiong language for modding. in contrast to minecraft, minetest has all of it's lua api documented with lots of video tutorials and dedicated discord server. i had a fun time creating a villgers mod (https://forum.minetest.net/viewtopic.php?f=9&t=17915) that added lots of villager NPCs into the game.
for now, will be hopping off of minecraft and revisiting Minetest modding to see if my open world survival goals can be executed on this platform.
pros: better documentation support for modding, able to mod almost any aspect of the game in lua (UI/HUD, animations, audio, main game mechanics, etc), and if desired can mod the core c++ code to change the engine itself. very similar to minecraft, so anyone who likes minecraft can pickup minetest immediately.
cons: world size is not unlimited like in minecraft. minetest is limited to 64,000 meters across in both directions and 64,000 meters vertically in both directions. however, minecraft's vertical maximum is only about 300 meters. so minetest has a huge advantage here where i can design worlds with many levels/layers/'dimensions' stacked on each other. also 64 km across might be large enough for my needs anyway. 7 days to die - the other open world survival game that i'm drawing lots of my inspiration has maximum 10 km worlds. to be fair though, 7 days to die focuses more on looting POIs than exploring biomes and travelling great distances. but, this is the goal for my open world survival game.
summer time and school is out for the kids and we've been jumping back into minecraft again, and into our multiplayer server i've setup since 2021. after updating our existing world for mc v1.19.4 (and soon to 1.20), and with my head deep in developer mode, i've been looking into these mc mods and how they're created. going to learn how to make minecraft mods now.. which is coded in java and i'll be siding with the fabric mod loader ecosystem.
minecraft has such a robust terrain generation system, and with some existing mods can add many biomes to explore, not to mention that the terrain is infinite in distance (in the horizonal direction). wonder if i can mod this enough to have smooth terrain, and incorporate more survival game mechanics like thirst, terrain and structure gravity, mobs/enemies that scale in difficulty based on time, player experience, and or biome, etc. slight detour ahead!
will be starting with these nice tutorials:
Java intro for Minecraft modding - https://www.youtube.com/watch?v=oBwPZRk6-SE&list=PLKGarocXCE1FeXvEogpjz4SvHxF_FJRO6
Minecraft 1.19 Fabric Modding Tutorial - https://www.youtube.com/watch?v=RSqSZoJQXvg&list=PLKGarocXCE1EeLZggaXPJaARxnAbUD8Y_
been learning so much these past weeks. i've been redoing chapters 1 through 4 but this time adding my own customizations and features not discussed in the course:
implementing a completely different player character model fromt the Apocolypse pack from Synty
adding realtime shadows to the player character in first person view using this vid by Ryan Laley as a guide
creating my own custom player animations instead of using the ones including in the course.
swapped in item assets (like tools, trees, etc) from other packs by Synty instead of using the generic ones provided by the course
enjoying learning how to create the player animations. at first it seemed intimidating since i have zero experience in animation or artsy things, but the built in rigging and animation tools in UE make it fairly easy to learn. so i've created all the core animations so far like walking, jogging, standing idle, holding a weapon, swinging weapon, walking / jogging while holding a weapon, etc. my animations still look a bit basic, but i'll certainly fine tune them as i learn more.
completed chapter 4 which ended on lecture #49. learned how to add sound effects when using tools to harvest the trees, rocks, and bushes. and, learned how to turn the trees, rocks, and bushes into 'foliage' instances that can be easily painted on the terrain, instead of placing them individually by hand.
finished lecture #54, which is halfway through chapter 5. learning how to implement the item crafting system, which includes item recipes data tables, and additional UI elements to show recipte details and requirements. 4 more lecture videos until this chapter on the crafting system is complete. chapter 6 will cover creating the player stats and healthbars, chpater 7 creating armor equipable items, chapter 8 creating the building system, and chapter 9 creating storage containers.
at this point, will hold off on the remaining chapters. i have enough knowledge now to create my own custom inventory system. there's a specific layout i'd like to create...
watched vid - How To Build MENUS AND UI In UE5
watched vid - Unreal Engine 5 Tutorial - Data Assets
completed lecture video #45. learning how to create destructible harvestable trees, boulders, and bushes. in doing so, learning how to use the UE chaos destruction system to make meshes break apart upon destruction which is cool and very useful. learning how to create the resource items (wood, stone, berries, leaves, etc) and making functions that calculate how much resources are looted based on the object being hit and the tool being used. learning how to ensure items are stacking within each slot in the inventory and that all items can be drag and dropped between hotbar and inventory.
having some neck pain these past couple days. probably slepted on my pillow wrong. getting old.
will have a video demo soon.
completed lecture video #33. learning how to construct the player hotbar UI and backend, and load a slot with a test stone hatchet item, and have the player equip it by selecting that slot. also learning how animation and anim montages work within UE and tested with linking the proper animation for the player swinging the hatchet. also learned how to ensure the correct 3D model and animation is displayed for the player's viewpoint (first person view) and for the other players on the server (their 3rd person view). cool stuff.
completed chapter 2, which ends on video lecture #24. basic inventory system built which has drag and drop function. before going onto chapter 3 (creating the player hotbar and creating an equipable tools), i skimmed through all the previous videos again to create a diagram of all the blueprint files involved in the game setup so far. doing this helps a lot on visualizing how all the files piece together and their dependencies, and in the future, what file to target to extend or modify features.
i'm happy with my progress so far. it will be several weeks before i have a working prototype resulting from this course path, but will be a much better foundation.
at some point sooner, i will at least package up my current prototype for play testing by family and friends as a demo of what's possible with the resources I have.
spent the last two days absorbing the UE survival game course. i'm enjoying it and should have done this earlier in my learning. unlike other yt tutorial vids, these vids explains the reasoning behind each step and has a dedicated discord channel for each lecture. i'm on lecture 19 of 113 -- and more lectures being added constantly. i have a better understanding of character animations and setting up widgets (used for onscreen UI/HUD elements) now. currently finishing up how to setup the inventory system, and thanks to the other discord members i learned how to get past the interface bug that i faced from the yt tutorial videos weeks before.
this survival game course will next take me through creating the player hotbar, equipable items, resource harvesting system, item crafting system, player experience/skills/stats, equipable clothing/armor, base building system, and storage containers. these are chapters 3 - 9 in the course.
this course is still work in progress with chapters and lectures not yet created (but planned) for the following topics - open world map and biome creation, enemy and creature AI system, procedural creature spawning zones, interactable structures like workbenches/forge/beds/, in-game multiplayer chat system, multiplayer clan/tribe/raid system, save and load system. and lectures on how to fully package and publish the completed game onto Steam. these are chapters 10 to beyond.
i'll be spending the next couple weeks learning through chapter 9. at that point i should have more insight on how to further customize my current prototype game using the ESRPG kit.
at the same time i'm learning so much of how to build the core mechanics of an open world survival from scratch, that my main game development (beyond the current prototype) may no longer use the ESRPG kit as a crutch and instead just be used as reference as I build my game from scratch with the help of the lectures and community in the survival game course. in the long run, i'll learn the most this way.
found an interesting free tutuorial on environmental art.
decided to do the UE survival game course https://smartpoly.teachable.com/
haven't found solution for the creature respawn time issue. for now, i've set creatures to always be active/spawned regardless of player distance, but have removed enough creatures to maintain approx 50-70 fps. there appears to be some limitations to the ESRPG spawning system and i may need to look into implementing a custom solution.
learning how to customize health and movement attributes of the creatures.
ran into an issue: for some reason the healthbars that appear above the skeletons went from red to white... and can't find where in the skeleton's settings that control it. the healthbar for the animals are just fine.
feeling a bit frustrated that it could be something simple but i don't understand enough of about UE to see. asked the ESRPG discord group. i can revert to a backup copy of the project no prob though. however, will likely jump into more UE tutorials to just learn more of the fundamentals.
water well placed. made modifications to the friendly skeleton trader's stock -- add some items, removed others, and tweaked prices.
made mushrooms and arugula edible and able to spoil. tweaked player effects after eating those spoiled items.
to preserve framerate performance, i enabled the setting (within ESRPG) that has all creatures spawn on the map only when the player approaches near a certain distance, and also despawn once the player moves away. however it appears that the time it takes (in seconds) for the creatures to respawn (when approaching near) is a settings that is shared with creature respawning after it is killed. i've set this respawn time to 10 minutes, which is a good respawn time for killed creatures, but that's too long of a wait for alive creatures to simply respawn that had only previously despawned due to player distance. will need to find a solution for this.
working on placing loot containers and chests on the map, and implementing destructibility for a few final miscellaneous objects like wood crates and tents.
found a good Unreal Engine 5 tutorial course that walks begininers through in great detail how to create a full open world survival game from scratch. https://smartpoly.teachable.com/
after finishing my prototype map, i'll go through a full tutorial like this. even though using template packs like ESRPG is very convenient, i'm still missing lots of fundamental knowledge of UE. I've noticed this as many of my questions on their discord are very basic compared to everyone else. a complete knowledge of building a game from scratch will allow me better understanding of how the ESRPG pack is designed, and then allow me to more effectively customize or add onto it.
there is also a great comprehensive tutorial for Voxel Plugin (only $50) but that will come in much later. after i am comfortable with building a game from scratch. https://quadmension.com/voxel-plugin-pro-course/
completed with placing spawners for enemies and animals on the entire map - denoted by the little skull icons. also added a friendly skeleton who is a trader. feels like a playable game now.
next will need to place loot boxes and loot chests, and a water well for the player to refill bottles for water.
the caves will not yet have any enemies spawn, since the player character is unable to wield a weapon when holding a torch. will need to research that later.
spawn points are working now and enemies are appearing where they should. Had to place down a "NavMeshBoundsVolume" into the level, where all spawn points must be within. so i created one big navmesh cube that encompassed the entire map. i have a feeling there's some nuances i'm going to have to deal with later.
found that after 50 enemies are spawned on the map, any additional spawned enemies do not move. they still do their idle animation, tauant animation, and attack when i'm close, but they don't walk anywhere. hitting the discord for answers..
found that the 50 enemy issue is a setting within the Unreal Engine project, which caps AI agent activity to 50 agents. this number can be increased (pic below). obviously the higher i go, the more processing is required - thus frame rate can suffer.
i've place skeletons in the forest, grassy plains, and desert area. the mountain area is next. spawning enemies in the caves will require another solution - as the player must carry a torch and see, but for now i don't see a way to duel wield a torch and a weapon.
mountain area complete (pic below). now onto placement of animals (for hunting) and hostile creatures for all regions of the map.
none of the creatures spawn when placed on the map. hit the ESRPG discord and found that i need to use Navigation meshes to define where the creature's AI will operate.
found a yt vid about it https://youtu.be/POWVHSAlT7E
caves complete (pic below). pretty much finished the mountain area as well, just need to add the mining blocks and collectable stones.
what took most of my time was testing the collision boundaries of every nook and cranny of the caves and mountains and placing additional boulders to block any areas that the player shouldn't be able to climb or jump up onto. no secret warp zones in this game yet.
youtube vid that showcases a few top sites for free low poly 3D models / assets. https://youtu.be/Iw-uyAiLZT8
youtube vid that shares 50 tips for Unreal Engine. near the end also shared some great youtube channels for UE tutorials. https://youtu.be/iayPiX8tBmQ
continued touch up in the caves. added stalagmites / stalactites, ore mining blocks, and generally more boulders everywhere. the boulders and stalagmites/tites not harvestable, but i'd like to implement that in the future.
focused on improving the colors. the greens of the grass and trees were too bright and washed out. i dropped the brightness on them, and i changed the base ground color to a deeper green in the forest and a lighter green in the grassy plains. the forest looks more lush and green now, and the ground and grass colors in the plains match better.
the leaves color of the weeping willows, birch, and apple/oak trees are a darker green now. matches great with the rest of the environment now.
also used better texture and color for the sloping cliff areas inside the forest. now it actually looks like dirt and not hard rock everywhere.
browsed through the Epic dev community https://dev.epicgames.com/community/ and the online UE5 documentation https://docs.unrealengine.com/5.0/en-US/
working on grassy plains and placement of other trees in the landscape. will need to modify some of the tree leaves textures to add some color variation. i also think the leaves should be a darker hue too.
caves and mountain regions are done, just need to add some minor decorative elements, and stone drops, and mining / ore drops.
the lighting for my caves is too bright (pic 1). need to figure out how to make it pitch black. there is a 'skylight' component within the level that provides nice scattered lighting and translucent shadows for the exterior environment but it's also causing the caves to too bright. disabling the skylight makes the caves nice and dark, but outside environment shadows (from trees, grass, etc) become pitch black.
figured out the lighting and shadow issue. not sure why, but i just deleted all the lighting elements from the map (directional light, skylight, sky atmosphere, height fog, etc) then re-added them, and all works as desired. now shadows from trees are not super dark (pic 2), but my cave interiors are (pic 3). Yay.
created desert region near the mountains (pic 1). the assets i have for now only relates to a sandy desert and palm trees, and not arizona desert style with cactus. will need to get that asset pack in the future.
also got a start on a cave system, which will go hand in hand with the mountainous region (pic 2). while laying out the mountains, had to learn more about creating the collisions for the rock/stone assets.
great collisions tutorial here: https://youtu.be/X2CtmdkFdz0
procedurally generating landscape is not possible at this time since i haven't incorporated Voxel Plugin into the project yet. so this current sample map is still manually done by hand.
general shape of this map is essentially a bowl bounded by mountains. added a pine forest biome. grasslands, desert, and a mountainous region to come next.
completed recalculation of harvest and rewards for remaining foliage assets.
creating a sample map with all interactable landscape foliage created thus far. this will help me gauge if more landscape foliage is needed to get a playable prototype of the game going.
created a framework to calculate the tree's HP, received resources, and experience points based on the tree's size. essentially the tree size dictates how many axe swings it take to cut down. the number of axe swings determines the HP, which in turn determines how much wood, sticks, and other resources are dropped. the tree's hp also dictates the experience earned by the player.
completed this recalculation for all trees and dead trees. will move on to remaining choppable objects like tree stumps, logs, and fallen branches.
completed chop-harvest implementation for all remaining trees that came with the Synty Adventure and Synty Nature packs.
found a great tutorial on how to created 3D meshes inside UE - https://youtu.be/9InU0xbX7l0 . with this i'll be able to make more basic shapes like tree trucks, and basic inventory items when they're dropped to the ground -- like apples, leaves, etc.
finished implementing collectability for the various landscape assets from the Synty Adventure pack - first pic below: 5 more stones, 2 more ferns, 6 plants, 2 flowers, 3 mushrooms, arugula, leek, and wheat.
the viewable inventory items that result from collecting this foliage stuffs does not actually exist yet, so my next task is to create them. for example, need to create the inventory icons and also the 3D drop meshes for mushrooms, arugula, leeks, wheat, and plant leaves.
inventory icons are just 2D images (TGA, PNG, etc) and i can easily create/edit in photoshop. however i've never done 3D modelling. it appears 3D meshes in UE are typically in FBX format. UE has a plugin that allows very basic mesh touch ups, but i need to create new meshes. looks like i'll need to learn up some 3rd party tools like Maya or Blender. BUT, will see if there's anywhere online that provides free 3D meshes that match this current art style.
for now, i've created the 2D inventory icons for the foliage (2nd pic). now for the 3D meshes that appear when the player drops any of these items, currently just using a generic loot sack that ESRPG has included.
Moving onto integration of harvesting via chopping tools. unlike small plants which can be simply picked up by the player, large landscape objects like trees, logs, and stumps require a tool like an axe to harvest. ESRPG only included palm trees to showcase this interaction. on the other hand, the two asset packs that i recently purchased (Synty Adventure and Synty Nature) includes many more objects to interact with, and will require me to implement the chopping harvest mechanism into them.
completed chop-harvest implementation for the various tree elements from the asset packs (pic below) like dead trees, stumps, large branches, and logs. these objects are now destructible by the player with harvesting tools (like an axe) and will give the player resources like wood and sticks.
figured out how to customize the player interaction text so that the screen displays the name of the object the crosshair is pointed at
had to learn how to create data tables and use blueprints to reference that data
finished the tall grass, fern, dry bush, sticks, and stones collectability and interactive text. these make up the remaining collectable foliage types that came with ESRPG. now to implement collectability for items from the other asset packs i obtained -- Synty Adventure pack and Synty Nature pack.
begin modification of new assets from the Synty nature asset pack to ensure they are interactable and harvestable like the existing ESRPG assets - so that stones can be picked up and recognized within the player inventory, trees can be chopped down and drop wood as loot, etc.
learned how map and landscaping setup works between UE5 and ESRPG template. will now work on creating my own sample map/level. this will also act as a test to see if what i've learned so far will provide enough mechanics for the style of survival game i'm aiming for.
ESRPG template only has landscape assets centered around a desert island pirate theme and only has palm trees for the tree selection (pic1). will find another asset pack from UE marketplace that provides more trees, plants, rocks and other natural formations but still follow similar art style of ESRPG - which i like.
found a nice asset pack by Synty that matches ESRPG's art style (pic2).
modified all existing bottled drinks (rum, water, red/blue drinks, etc) to return back empty bottles/jars after contents are consumed
modified the two broken barrels to be destructible and to return planks as resource/loot items
learned more about collisions on meshes and customizing loot tables that determine what loot is received when player searches containers.
focused on taking the existing landscape foliage that is not collectable by the player and making it so. updated tall grass, fern, small sticks, and dry brush to be pickup-able, and created custom loot for each of them. for example. tall grass provides fiber, fern provides leaves and fiber, and dry bush provides sticks.
Learned a bit more how the keyboard, mouse, and UI systems are managed in ESRPG.
modified some mouse and keyboard controls that deal with moving inventory items between containers and the hotbar, and also dropping items to the ground.
Learned what files and mechanism are involved in 1) creating more trees and structures that can be harvested (via tools like axe, pickaxe, etc) for resources, and 2) creating more landscape foliage (like flowers, tall grass, dry brush) that the player can pickup into their inventory.
figured out how to reduce player movement speed when walking backwards and when moving sideways / strafing. this involved modifying an existing function, creating new variables, and creating a new custom function (refer below). learning a great deal.
learned how to make a consumable item produce another item. for example, drinking a jar of water will return an empty jar, or eating a drumstick will return a bone.
learned how to modify food decay rates
learned how to modify player energy depletion rates for certain actions
played the demo level for ESRPG more in depth to find out what more aspects need to be customized to fit the gameplay i'm looking for. a few that i found:
allow for pressing Q key to drop the selected item from hotbar
decrease walking speed when strafing or walking backward
create/add crouching and crouch walking animation for player
create/add walking animation for player. currently player only has jogging and sprinting ability
prevent any action (jumping, punching, swinging weapon or tools, etc) when player energy reaches zero. currently only sprinting is halted when energy is zero.
make grass, shrubs, large boulders, and misc decorations destroyable. currently only trees, certain mineable boulders, and player buildings are destroyable.
add female playable character
add more hair, face, and body customization for player character
figured out how to implement 1) dropping item via Q key, and 2) preventing jump/attack/tool usage action when energy is too low
bought the asset pack by Easy Systems and begain customization work
learned how to modify the icon and colors of the health and various status bars (pic 1 below)
added ability to use mouse wheel to select items on the hotbar
learned how to define the color options for clothing mesh so that it's selectable within the character customization screen (pic 2 below)
discovered that UE marketplace has lots of premade inventory system templates that can be used. a massive one by Game By Hyper include mechanisms like crafting, equipment, vendors/traders, level and skill manager, etc. it's not cheap though at $240. then i found complete multiplayer survival template packs, that includes almost all mechanisms for a complete survival game! features include inventory, crafting, enemies, animal and terrain harvesting, skill levels, player avatar customization, melee and ranged attack system, etc.
one such template pack by Dreamrise Studios specializes on 3rd person view and includes weather effects and vehicles, while another pack by Easy Systems includes a fishing system and magic spell attack mechanics, and will add first person view support soon. both are $350. both groups have a dedicated discord channel for usage support and ample documentation.
i'm considering the pack by Easy systems since i've read that other users are able to make it work with Voxel Plugin. why reinvent the wheel when there's already a dedicated team providing my desired base game mechanics? instead of hiring developers on a contract or salary to create these features from scratch, i can just spend a flat $350 for the needed game mechanics. this allows me to focus on customizing the higher level gameplay aspects, which is what i enjoy most. will still need to continue my UE blueprints learning since it will only make it easier for me to understand how to modify these template packs where needed.
continued with vids 5, 6, and 7 by Ryan Laley and learned to add the data objects required to track the player inventory when an item is picked up, and objects to manage onscreen UI elements to display the inventory screen and item stacks. got exposed to lots of new blueprint nodes. many represent familiar programming concepts like loops, arrays, printing to output, referencing objects/classes and their variables and functions, but still getting used to how they are represented by these UE blueprint nodes and how they are visually pinned together. cool stuff.
the vid series by Ryan is more efficient and organized than Jonatan's and i haven't run into any unexpected bugs while following along.
watched vid about destructable meshes by BuildGameWithJon
continued with video #6 by Jonatan Isaksson regarding adding physics to items. ran into issues where item kept falling through the map. i suspect it's related to how the static mesh of the item was created, which was not covered in his series. not able to figure out why. jumping track to learn to code an inventory system using Ryan Laley instead.
followed through tutorial vids 1 though 4 on building inventory system by Ryan Laley, which so far shows how to detect a pickup-able object, then do the pickup via E key, then ensure it disappears from the world for main player and all other multiplayer clients.
learned to add camera views for player, adjust 3rd view cam location, and add kb shortcut to toggle first / third view (video by Gorka Games).
learned to modify basic movement animations and pair with correct walking speeds. added walking as the default movement and Shift key to start running. guidance from video by The Real Unreal.
continued with video #5 by Jonatan Isaksson and 1) ensured dropped item is removed from inventory window, 2) multiple rows of items icons properly wrap in the inventory window , 3) and further optimized code for multi player
did further reading on Voxel Plugin for UE which allows creation and management of procedurally generated terrain and terrain destruction. will likely buy the plugin since these feature is a very important feature in my game. lots of great youtube vids explaining how to use it as well: procedurally generated open worlds | destructible terrain
continued with video #4 by Jonatan Isaksson and learned 1) enabling mouse pointer/control when inventory is displayed, and 2) using mouse dragging to drop item from inventory to the ground.
continued with video #3 by Jonatan Isaksson and learned adding pickup sounds.
found that UE 5.0 didn't have blueprint interface issues like EU 5.1, and so was able to continue following vid series by Jonatan Isaksson . currently on vid 2 of 52. created inventory UI window that appears when pressing Tab in kb. created first item (wood stick resource) and ensure when player walks over it that it appears the inventory window.
watched vid series on how to create an inventory system in UE5 by Jonatan Isaksson and Ryan Laley and ran into a snag regarding blueprint interfaces. found it's due to a bug in UE v5.1.0 so will continue onward with v5.0.3.
UE 5.1 Official documentation here
watching 3hr vid 'complete intro to blueprints'
watching 2hr vid 'voxel plugin 2.0 next-gen world creation'
watched 4min video about 'how to understand blueprints'
watched youtube video on creating a sample map and using landscape and foliage tools in Unreal Engine. tutorial video | video of sample map
watched videos on the basics of using blueprints in Unreal Engine to create the mechanisms to drive game behaviors and animations. tutorial video 1 | tutorial video 2 | tutorial video 3
starting to learn Unreal Engine as a complete noob. watching great 5hr beginner video by Unreal Sensei on youtube - https://youtu.be/k-zMkzmduqI