Chaos Physics 1…me 0

Spent a bunch (like 1-2ish hours) of time trying to get the chaos physics working with the tree and…

It kinda works but the issue comes into the in game interaction. The damage levels seem to be weirdly arbitrary and aren’t assigned to a root bone but the pieces themselves Also the definition of “damage” seems to be just a number that gets exceeded in a fixed amount of time. I could probably figure this out with another day or so of digging but I’m starting to get fixated on this rather than just straight up making the game. However, I’m going to go through my experience just to give an intro/document for myself in the future.

Making a destructible object

This part actually wasn’t that hard, essentially you just drag/drop a mesh in. Flip to the “fracture” mode and click new. Then you start using the slicing tools on the left hand side to cut apart the mesh, then you select sub-part of the mesh and cut again.

This creates a tree of destructible on the left hand side where each “level” is a root piece that has child pieces.

So the idea seems to be you break the root the rest will break off. However, that’s the part I’ve been stuck on, there’s damage settings that seem to not work the way I would expect. Either way I’m moving the goal to making more weapons and enemies.

Tree part 3

Recording myself modeling another tree. Then I realized I probably shouldn’t be posting videos with copyrighted music, so I made a song to go along with the tree recording (I used some of the pre-canned abelton clips for bass and vocals which feels like cheating but I wanted something kinda alright and fast, the drums I did myself.)

There’s one branch that looks weird to me but otherwise I think it came out alright.

This also was my first time using KdenLive (https://kdenlive.org/en/) which is surprisingly good for an open source video editor. Last time I was editing video heavily was probably in high school with a trial copy of sony vegas and windows movie maker.

Highly recommend if you want basic timelines + audio editing, if you’re going crazy with effects might be better to stick to adobe’s software.

Now I can go probably make small variations to the same tree 3-4 more times to get a good low-poly forest going.

More Tree For Thee

I made a better tree, not perfect (it still has the weird branch in the upper left) but its more passable than the other tree I made.

I also found in unreal the “Foliage” system ( see https://dev.epicgames.com/documentation/en-us/unreal-engine/procedural-foliage-tool-in-unreal-engine ) which is the opposite of the “Landscape” system used for grass. Essentially it lets you spawn hundreds of a single actor and handles it externally from the normal actors.

The trees now have collisions!

The first thing I wanted to try getting working was having bits break off of the tree.

This can be done using unreal’s chaos destruction but I’m still messing around with the parameters. I tried the current tree and it just kinda falls apart really quick:

My hope is that when your running through the woods getting shot at a bunch of splinters will be flying through the air as bullets hit trees.

When applied to the whole forest you get a cool view of all of the tree’s falling apart slowly.

Maybe that would be cool for a menu or something, but really I need to make the chunks smaller and fix the split apart trigger so it doesnt just magically explode.

THE WOODS!

Jumped back into unreal but I’m heavily procrastinating the game parts so I started messing with some of the environment tools in unreal. Specifically I’ve been poking at the grass setup tools (https://dev.epicgames.com/documentation/en-us/unreal-engine/grass-quick-start-in-unreal-engine). Not too complicated essentially, your environment drives a few inputs and outputs in your landscape material.

So I whipped up a quick ground texture in gimp:

Where each layer is a bit more grass ontop of the dirt:

Then I whipped up two quick grass and tree models in blender.

Then once you import both into unreal you can tie everything together using a “LandscapeGrassType” which is just a data holder for what you consider grass:

Then throw it into your material

The final result was surprisingly good. Obviously I could add more grass, touch up the ground texture, make a tree that doesn’t look like a plastic pylon. But I’m dumbfounded how far this stuff has come along from unreal 4.

I have a strong feeling you’re straight up not supposed to use this system to add trees (You can see in the video above that the bullets don’t collide with the trees). But I’m still happy at least that the workflow is quite simple.

Drawing onto the landscape is very easy also, If I wanted to make a path I can just draw the rock layer in a quick line like in the video above.

Now to the actual game stuff I’m thinking my next change into game-play will be moving things closer to kind of a pseudo helldivers mission where:
1.) Players spawn on a big map
2.) Enemies spawn a wave to attack the central spawn and players fight to survive/save the base
3.) Once the enemy wave is over players will leave the base to try to destroy spawners
4.) The next wave starts, the players run back to base and restock
5.) Rinse and repeat for all spawners
5.) Once the players destroy all the spawners a boss wave starts
6.)Players defeat the boss and the game ends.

Seems like a reasonable goal, it also sounds like a multiplayer game but honestly I dont wanna go down that rabbit hole yet. I have half of a multiplayer game made from awhile ago which seems like a good idea but it requires you to modify the engine build to pull in steamworks. My goal here is still to avoid using c/c++ so I can focus on just assets until I REALLY need to optimize. In addition making 3rd person models will probably require me to re-make a bunch of the blueprints which sounds horrible at this stage.

Table Part 2

Remade the table this morning:

The “Tris” number is something I forget to mention yesterday which is the thing that directly correlates to how hard a renderer (such as Unreal Engine) has to work to render something. Note the number is around 500 (which honestly might still be too high). The table yesterday:

Hopefully that reinforces the points from yesterday. In addition the UV maps are much easier to see, simple to understand and are broken apart by each component of the table: tabletop, legs, cross bar, leg flange and crossbar flange.

In addition proper use of mirror modifiers lets you do a single object:

Here’s the mirror modifier for the legs:

All in all its a table, it does what it’s supposed to and holds things off the floor. If I wanted to get interesting I can export each portion to unreal individually, re-attach things in game then when the player breaks the table it breaks semi-intelligently. However, I just wanted a table not a crazy physics object (yet).

Also here’s the table colored:

I the crappy wood coloring is from a quick noise texture in blender:

I have better wood/metal materials in the game so once exported that should clean itself up (hopefully).

How to not to Model a Table

Look at this table! Seems good right? …Right?……RIGHT?

I can promise you this is not good, you see when you make 3d models you can’t just “Make” the models. You need to plan and thing it through, the big things are:
1.) Keep the model as many simple shapes as possible
2.) Avoid complex faces that are not quads (i.e. 4 sided 4 vertex where it’s possible to rotate the face to be a flat rectangle
3.) Don’t repeat work (aka if you’re making a table make the leg once and copy+paste it…)

Now let me show you how I violated ALL of these checks

Above is the model view but I’m showing you the faces and vertexes of the model. You can almost immediately see the violations here. Everything is one piece, the legs are obviously done individually, there’s a weird slide in the middle of the table which serves no aesthetic value and if you zoom in on the top of the legs…

A TRIANGLE! However if you take the same pic in wire-frame you can see something much worse.

The bit circled in yellow is a hidden and folded face!!!! A big no-no especially for game dev where you’re trying to minimize the number of faces rendered on screen at once. Now you may ask yourself “Will. It’s still a table why do we care” the problem comes in when you make UV Maps.

from https://lkinulas.github.io/development/unity/2016/05/06/uv-mapping.html

To the uninitiated a UV map is a 2d projection of the external facing surfaces of an object, for a cube if you unwrap it you’ll get a chunky plus sign shape(more about this here: https://lkinulas.github.io/development/unity/2016/05/06/uv-mapping.html , which I skimmed but it seems better than anything I could write). Usually the way that adding textures onto a 3d model works is that you attempt to make the UV map in blender, then you dump into substance painter or equivalent program where you can paint onto the model in 3d, then you can dump the files out as text images. For example here’s the UV map of a keypad I made last year

Which here each of the keys have a single UV map, so therefore they have a single image to represent the color (known as albedo majority of the time, atleast with blender and unreal which both use “Physically based rendering” see https://en.wikipedia.org/wiki/Physically_based_rendering)

The 3d model holds the decoder-ring (which is the UV map) to convert the image file to properly positioned colors on the 3d model. Now you make now ask “hey everything you made for this game is literally a flat color and there’s no detail to mis-align” which is true. However with modern game engines they literally take the UV map and use that information to calculate how it interacts with light. An improperly made UV map can cause 3d models to flicker in bright lights, make them dark when they should be light and vice-versa. In the worst cases it can cause them to disappear entirely! In addition when you start doing things like bullet holes or blood stains on world models, an improper UV map will make the decal that is put onto the model become very mis-aligned from the intended position (think a bullet is shot at a table, the bullet hole should be where the bullet hit).

So now back to the table. The main issue here is that blender is actually pretty awesome at automating the generation of UV maps…Assuming your model is a simple geometry object (i.e. sphere, cube, cone, torus, plane) and doesn’t have the triangles. So if we try to automate the export of the table:

To give context of what you’re looking at, the left hand side shows each face on the table face, each grey square directly corresponds to each face on the 3d model on the right. If I select and individual face:

It shows exactly where the face will appear on the output image. So if you go back to the first image you can see that if I tried to just blindly apply either lighting effects or an image to the uv map we start hitting issues. For instance if I put a light directly on this corner

What will most likely happen is that everything in between those two faces will be lit in addition to the two faces in question. What’s in the middle you ask?

Not the areas you would expect to be lit. There’s also other factors here that I could get away with by getting creative with materials (which determine the direct lighting parameters like luminosity, albedo etc) but that would be much more work than just restarting, making a tabletop model, making a leg model and making a crossbar model then just copy+pasting the whole thing again.

With all of this you may also still be asking:
1.) Why are you making a table
2.) How does this fit into a game?
3.) Why are you blogging and modeling on Saturday night?

Answers:
1.) I haven’t made a model in a few weeks and I wanted to get my feet wet again
2.) Idk, places have tables. Wooden tables. Nice tables. With cross bars.
3.) It’s cold. I feel like crap and shut up

Also I’m straight up dreading adding more animations to the robot, I need to add a knife stab animation, a grenade throw animation and some kind of heavy shot animation. Unreal is very very bad at handling an updated model with updated animations. The process involves re-exporting everything as another .fbx file, deleting redundant animations, deleting the new re-imported base model and re-assigning each animation’s skeleton to the original skeleton and hoping you remembered the export settings from 6 months ago. If your forgot the aforementioned export settings you need to turn a knob keep doing the same process until things look kinda right. I’m debating on buying maya just to avoid this situation but I’d love to avoid learning new things until I get this silly game on steam.

Editors note (1 day later): I realized I wrote this whole thing without explaining why I did a bunch of dumb stuff: I was getting back to modeling and I just ran with the feelings for an hour rather than thinking it through. So I made a bunch of critical early mistakes which makes the model very hard to use.

“We have several items for purchase!”

I made a store stand that I’ll put a bipedal robot behind to be a shop owner. It’s currently not scaled or setup right to work. I think I’m going to make the lightbulb it’s own object that way I can swap colors on the fly. Right now I kept them in because I wanted to see what they would look like on the wire there. On the counter is a cardboard tip box and a metal lock-box.

Behind the Counter is a metal bucket (filled with what? Idk) and a generator that I’ll probably break out into it’s own object also.

In addition I wanna put a decal on the sign up top to say something like “robot killing weapons”.

Also I need to copy +paste the table a few times to make a full stand kind of thing. The proportions are definitely off so when I pull it into unreal it will be flippin’ huge. But before I do any scaling I’ll need to finalize everything on the table and fix up the wires so they’re not as blocky. Flat shading is fine but I think I can keep that vibe but put some wood texture on it for the next go around.

Grenade and stealing music to make more music

I have a few cassettes of older music that I wanna sample and put into something in Abelton. Why use cassettes? They’re cheap as hell, this one was $4 from my local record store.

I also made this guy:

Simple enough, getting it in game went smoothly. I don’t think I want to make this a first person model I’ll probably just attach it onto the front of one of the bots to make a kamikaze bot that rushes the player.

I also spun up a quick “use” system, which is just a ray-trace off the front of the player’s camera to whatever is in front of them. Then I made a generic “usableObject” interface which receives use commands that anything can implement.

This will be the first usable thing:

Idk what it will do but my hope is to make quick chat logs when you press use, or even a buy menu.

Game Stuff: New Hud and Angry Gimp usage

I swapped out the health numbers and ammo numbers for the game. Still frame looks alright now but personally I think the ammo count size needs more work. Also the whole thing is sliding off the screen which makes me think I need to recreate the whole UI widget from scratch. The biggest accomplishment here is getting the hex pattern for that health bar. For my 2d art I primarily use GIMP (https://www.gimp.org/) and gimp is usually good about having a pathway to do whatever you need. I would say around 80% of the time you can google “how to blah in GIMP” and you have 20+ years of history to rely on to get some kind of idea on how to do things. For that last 20% the solution is usually involves ripping an image from somewhere else to use as a stencil or as a basis for a built-in filter. In this case it was the latter. Gimp has filters for making a square checkerboard and diamonds but nothing for hex’s except for a “mozaic” filter. Which looks fine on paper but if you’re messing with the alpha you need very exact lines and the mozaic filter makes a pattern that includes a simulated light which annoyingly blurs the edges. However, the edges aren’t blurred by a gradient color (which can be easily fixed) but is blurred by adding a gradient to the alpha.

From here it looks fine.
Zoomed in is where troubled can be seen.

I tried everything to get rid of these edges but failed miserably: edge detection, thresholding, median blurs, contrast and color selection all seemed to maintain the gradient off the edge lines. I eventually gave up and used the suggestion from “chaz_prinz” here: https://www.reddit.com/r/GIMP/comments/rg5wt4/creating_a_borderless_hexagon_gridpattern/ and ripped a hex pattern from the internet to generate a black/white image which I was able to use for the pattern.
I ended up with a pretty nice pattern here:

Which I threw into a filled green rectangle to get the health bar above (plus some trimming/filling around the edges). I think the result is quite nice and fits the whole old-er school vibe that I’m going for. I might make it red just to fit the obvious ascetics from every other game in existence but I figure I’d fix up the ammo up first.

Lean With it

Added Leaning to the game and did some work on the reactions to different kinds of physical materials.

Gun still clips a bunch but it’s better than it was. The leaning needs more work but I figure to do that properly would require some kind of timer setup which I really don’t want to do at the moment (will add further layers to my not amazing blueprints).