Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Project Shine (with my own humble procedural 3D game engine)

A topic by FearCode created Feb 15, 2023 Views: 2,887 Replies: 72
Viewing posts 1 to 20 of 41 · Next page · Last page
(53 edits) (+4)

Hi! Solo dev here working during free time in a quite ambitious project, it's a 3D survival, with lots of open topics yet to be decided.

The Game 

  • 3D Survival
  • Everything will be (partially or completely) procedurally generated.
  • Anime characters
  • Surrealistic background story.
  • The game is being developed with my own humble engine and my own editor (so they are 3 projects in one actually)
  • X Factor - I will reveal upon Alpha release

The Team

I, me and myself.

Since I love making game engines (and I do that for a living) I'm creating the game from my own humble engine.

  • Game Design: Me
  • All Programming (Gameplay/Engine/Graphics/Physics/AI): Me
  • Music: Me
  • Art:
    • Me procedurally generating it for static art like props and nature.
    • Me rigging, skinning and animating models created by merging (and procedurally modifying) multiple pieces from assets created by online artists, (The full credits will be available once alpha is released,  because right now I'm still deciding which ones to pick)
  • Sound effects: not yet decided.

The Game Engine

My own indie 3D Procedural Game engine: Biomancer


I'm first developing the Game Engine, but parts of the game may come in parallel as well.

Image Samples

Latest Screenshots:





The very first Screenshot:


There is the very first screenshot of the base model that will be the base for all models (female at least) rendered by my engine.

As you can see, the model is plain and not animated, loading it internally from blender was the first step of many, things may evolve slowly since I'm making the engine.

Sorry for the blurs in the image, those parts are fully modeled, and I'm not sure if the game will be 18+ or not, that's a possibility not yet discarded.

Another detail you can see is the background which simulates the sky procedurally. The black ground is just nothing, since the sky right now is just a dome that covers everything but the ground.

Game Progress/Release Dates:

Current development is at 20.3% complete.

Path for Editor Alpha release is at 67.7% complete.

Editor Alpha Release date:  2024-08-15

(4 edits) (+1)

Colors!

I updated the shader to render with colors (it was a plain boring white so far). The model has no texture yet, its all vertex based colors.

Again sorry for the blur, I fully modeled those areas as said before because I'm not sure if the game will have any NSFW content in it (as a side feature).

Just as a refresher, I did this by making my way from a "notepad" to what you see, using my own engine, that's why the graphics won't be fancy like unreal or unity.

I'll get her some proper skin appearence, right now it looks like a doll...

Side note: These post are not time accurate, meaning it does not represent the actual stage or pace of development but rather the pace in which I have time to update this log.

(2 edits) (+2)

Skin! 

In previous update you saw her skin was not resembling skin at all, but not anymore:

This was achieved with a proper skin shader I did, this means the game will render the model based on the color I have set for her skin and the current lighting environment to make it look like actual human skin. The procedure is called sub-surface scattering which is just a "fancy" way to describe how light bounces on and in your skin (also happens in plant leaves and certain types of rock like salt)

Here is the off/on comparison:


much better, right?

The engine also calculates direct scattering from sunlight, here is closer look on her hand making V:


I just kept short about the technical details on how the effect works, but if anyone is interested I can go deeper in a special post.

Thanks for reading my update, and until next update :)

(1 edit) (+2)

Animations!

No T-pose anymore, I had animations in blender but my engine was not able to load them.


Not anymore, it supports skeletal animations, next step is to load 2 set of animations independently:

One for facial expressions and another for body animation, this will be a very important aspect of the game in future as you will see.

(+2)

This is cool, what is the focus of the engine?

(+2)

Oh, Hi Joyless!

The engine is specialized on 3D open world. These are the features it currently supports:

  • 3D Model import (FBX, OBJ, DAE, GLTF, Blender and more...)
  • Skinning
  • Physically based lighting
  • Global illumination
  • Antialasing
  • HDR rendering
  • Runtime scene management (you can edit your scene graph at runtime)
  • Collision detection and response
  • UI creation
  • Deferred rendering
  • Audio
  • 3D sounds
  • Procedurally generated sky (atmospheric scattering)
  • Procedurally generated terrains
  • Population rendering

No particles yet (weird right?) that's because I'm still studying the best solution to create the particle system in the game. 

So the engine is still very small but it's growing bit by bit. 

Another reason why I chose to make my own engine is because the game may be highly procedurally generated, and being able to to that with in low level will make it easier and very efficient.

Thanks for the post brother, I really appreciate!

(5 edits) (+1)

Side Log  - Language Barrier

Funny side log not exactly a full update but still sort of an update with a funny story.

If you haven't realised yet, English is not my first language, and one of the problems that us second-language english speakers have to face frequently is detecting names that may have some unnitentional possible meanings...

A name of a NPC in my game I was considering was Packer, then I took the stupid decision of searching for images in case it was a commonly known brand or something similar (to avoid conflicts)... And I had to see lots of plastic dicks, safe search was on, and for some reason these were all still popping onto my face...

A lesson was learned: Packer means penis prosthesis.

Another word for my english vocabulary never to be forgotten.... That's it, have a nice day...

(3 edits)

Put some clothes on!

Finally doing it for the poor girl. Look how happy she is now:


Lots of issues like z-fighting, weird bone wrapping, lack of double faces, some abnormal vertices weights.... And well, just plain white clothes!

But on the other hand, you can put any clothes you want (as long as you have the clothes in question, ofc), this will be a feature in the game.

Here are her in some other clothes.

The technique used for this is skin remapping. 

Now that she's properly dressed, what about... hair?

Lets get her some hair over this pretty bald spot next!

(1 edit) (+4)

Wanna buy some math?

This is a topic for math lovers, if you don't like, sorry,  please just read the next paragraph as it's the only part that may be interesting to anyone.

The game will have lots of procedurally generated NPCs. The process is quite simple: from a list of "generation references" do a interpolation between 2 extremes. For instance, one reference is "BodyGen|Gen.Cheek" as you guessed this describes the model's cheeks, 0 in there means very thin cheeks while 1 very thick, and 0.5 would be "avarage".

There's a total of 26 references that can vary between two extremes, so first interesting fact is that there are virtually infinite possible combinations, meaning each generated model is almost completely unique, since between two real numbers there are an infinite amount of numbers.

So the problem is that real life is not 100% random, we usually don't have a population of completely random visual traces, there's a distribution and a "standard" statistical range of each body part dimension. There is a statistical model that describes probability of something in a population, it's called Normal Distribution.

Here is an exmple of a estimation of pizza delivery time in a custom population of a specific city:


Taken from this nice article: https://statisticsbyjim.com/basics/normal-distribution/

Here is the formula for that graph:


My mean is 0 and my standard deviation is 0.2.

So, what I needed is to remap that my system, so 0 and 1 are the extremes of my graph, so they get low probability while the middle is high probability. In other words I had to solve the equation for f(f(x) / 2.0), which gave me the following result:


and that's the equation used in the game.

Show post...

Hmm, pizza 🍕 

(+1)

XD

Dang, that's actually so cool! This post has me hooked on the project, keep it up!

(+1)

Thanks man! I wasn't sure if I'd post more math related updates, but your support made my mind!

(+2)

Hair has grown!

Finally the female model is presentable:

You see, our hair does not reflect light in the same way as other parts of our body.


Hair belongs to special type of reflectance materials called Anisotropics, which is just a fancy name for saying that it reflects light diferently according to each direction and location, observe how its specularity shifts across each strand.


Of course, I gave it a cartoonish touch not to make it look very realistic, all to avoid falling in the uncanny valley and also because my humble engine can't handle it XD

I'm not a professional artist, I'm a graphics programmer, so I'd love to hear any feedback on the art side :)

And here is a sneak peak of what's coming next...


Game is around 6% complete and 14% ready for alpha release.

(+1)

I would like to know more about it 🙂

(+1)

Hi! 

The game itself is in very early stages of development, I'm still testing several gameplay possibilities, the most fun to play and the most feasible for me to implement in my humble engine without taking too long.

That said, What is decided for sure is that the game is a 3D open world RPG sandbox-like with surrealistic backstory. Most likely will be 3rd person (I still swing between 1st and 3rd, not yet decided). 

There is a big selling point I'm trying to implement in the game, but it's not yet complete and I'm not sure how much of it will be computationally possible, specially for a solo developer to implement by himself, that's why I'd rather not reveal it until I'm sure I will be able to deliver it, that's the X factor I described in the first post.

Hopefully I gave you a minimally accepted answer, as for now I have more questions than answer myself, I'm sorry about that, but I expect to come up with more detailed info in the upcoming months.

Thanks man, I appreciate the interest.

(3 edits)

Making the Maker

The game needed an visual editor and now I have this:

It's getting good enough be a character editor, will ease the process of creating all possible combinations for each race in the game.

I hope soon to  start posting videos, because things will be better presented if animated

Game is around 7% complete and 16% ready for alpha release.

Expression from face and body

So far she could only animate her face and/or body as one, meaning if she laughs her body needs to have a "laughing" animation. But not anymore, now she can laugh and dance, jump or even punch someone at the same time. In other words, now we can have different sets of animations playing simultaneously.

Here is an example:


3 independent animations at the same time: winking, smiling and posing :) 

Game is around 8% complete and 18% ready for alpha release.

(2 edits)

Everything is procedural!

One of the main points of the game is that everything will be procedurally generated.

Organic models will be partially, but static objects like nature and buildings I'm planning to make them 100% generated procedurally.

Here is the first iteration of the trees, dry without leaves for now:


I added it to my game editor so I can create procedural profiles which are like "themes" for each procedurally generated element in the game.

If you are curious about how the tree generation works, it is simple:

  1. Generate a cylinder for the main trunk
  2. Generate a cone in the top of the cylinder
  3. For a few random positions in the surface of the cylinder:
    • Generate another (Branch) cylinder with a fraction of the parent cylinder.
    • Generate its cone on top 
    • Repeat step 3 recursively for each sub-branch.

What I described above is what we call fractal generation. Lots of things are still missing, but the main idea is done :)

Game is around 8.5% complete and 19% ready for alpha release.

(3 edits)

Perfection is about imperfection

The procedural dry tree I presented in the previous post looks too unnatural, like a bunch of sticks glued into each other.

One key feature is missing to achieve good looking procedural nature: imperfections, aka, noise.

Now the branches are distorted according to a noise function I created for the game.

I also applied the same concept in the tree's procedural texture:


To make wood texture look more like wood.

Next is to make the game generate leaves for the tree.

Game is around 9% complete and 20% ready for alpha release.

Making a 3d game especially the graphics and assets is quite hard. Good luck 👍

You're right! Coding the graphics is also a challenge. Thanks, man!

Woah properties list, that looks fun ! You're doin' the hard parts of making fun tools. Props, man ! ! 

(+2)

Thanks a lot! I plan to go through the properties in a video, but haven't had the time to properly make it. As a fellow solo dev, you know how solo game dev is hard, right? So many fronts we have to tackle

Ah no kidding about the hard part, sometimes I get stuck on something and it feels like my brain just got fried by a microwave . But it’s also super rewarding to have full control on your visions and not needing to be reliant on others ! =-D You took it up 11 notches by making your own engine on top of everything, that’s just insane dedication and skill :’-D ! 

(+1)

Yes, it's quite nice to have complete independence (hence the name indie game dev.)!

I'm making my own engine because I love this part, I already do it for a living, but yes it's specially hard to maintain your own game engine, thanks for the acknowledgment! Personally, what I find most difficult is marketing and social-media stuff, It takes too long for me and I always feel like I'm missing something.

(3 edits)

We can't leave the leaves out

Sorry about the stupid title, but hey! Trees can have leaves now:

The editor can control how many leaves, their sizes and their properties like shape and color:


Well, to be more precise the editor controls how the generator randomizes the trees.

How are the leaves generated in the code:

  • Make a bezier Spline along the Y axis
  • Tesselate vertices in it and in the Y axis itself
  • Triangulate the vertices.
  •  Mirror-copy it to the other side of the axis
  • UVs: goes bottom-top and center-side direction.

Game is around 10% complete and 22% ready for alpha release.

We just hit the 10% mark!!! Yay! ᕕ(⌐■_■)ᕗ ♪♬

(5 edits) (+1)

Make some noise

You see, a good procedural generated game needs noise to make it look more convincing. So I pumped up the engine to support a full noise generation system:

Here is a screenshot

You may be wondering: "What is this crap used for?"

  • It's the soul of a procedurally generated terrain (spoiler: this is what is coming next).
  • Can be used to add realism to physical textures
  • Can describe small flunctations in water waves
  • Can be used as a base for Smoke simulation
  • Can be used in Cloud generation
  • Much more...

That's why I had to add a special module in the engine just for it.

Game is 11.5% complete and 24% ready for alpha release.

Side Note: we have a Alpha release date: November 15th of 2024! 

This date may change in future, If all goes well it could be sooner? hm... I wish I could dedicate 100% of my time to it :(

(+1)

Make it terrain

I got a noise texture generated by my noise editor (from the last post) and created a Terrain from it:


This is a fully procedurally generated terrain, just the first plain version. I have it coliding with the FPS camera correctly.

One may think this doesn't seem much but there's a lot going on behind the curtains, the LOD calculation is done through the GPU using a tesselation shader:

The game is 12% complete and 25% ready for alpha release.

(1 edit) (+1)

Physics in game is... different

Hey, did you two bodies can occupy the same space and time? In games, they can, and if you don't account for that you will get this:


So, what happened in there was that I mistakenly inverted the collision response normal vector, which pushed the camera into that box center, forcing the camera and the box to have the same position, once that happened the distance between both became zero, and in physics, dividing by distance is a common and frequent operation, so what happens when you divide by zero? So far in my engine that meant infinity, so yeah... in a split second the camera had a force of infinity applied to it, resulting in it getting tossed like a meteor outside of existence... quite a poetic bug :') 

Here is a zoom at the camera's position, observe how its Y position starts around 13, and then gets crazy really fast.


I changed the behaviour of my engine to take division by zero as nan (not a  number) so I can easily debug this scenario (it's more complicated that than, but that's the general idea).

So yeah, as you can guess I've been busy with the game's physics system:


The game won't explore physics system like the new Zelda or anything like that, its physics will be rather simple, that's why I'm just doing basic collision detection/response myself :)

The game is 12.5% complete and 26% ready for alpha release.

(5 edits) (+1)

Infinite land, no boundaries.

Pick a direction and go, in the game you will be able to walk forever and never face any invisible walls.

This is possible because as you may already know, the game is virtually 100% procedurally generated.

This is me walking in a straight line for 5 minutes:

This is one key aspect of the game I'll make sure to put extra effort: I want to give the player the freedom to run, jump, fly anywhere for as long as they please, this feature will be bound to a storyline, so there will more to explore about it, as of right now, this is rough and need lots of polishement.

The game is 13% complete and 27% ready for alpha release.

(+1)

Infinite procedural forest

Here is what's like to be surrounded by an infinite forest entirely generated by code:

What you see in the video is the player initially surrounded by 10800 trees, I said initially because the game regenerates the trees in real time, so in fact you are inside of an infinite forest, the "re-generation" starts to kick in in the second half of the video, although you don't actually feel it, all you notice is you that you are inside of a huge forest.

Being infinite is important for the game, because I want the game map size to be infinite, there will "bases", towns, entities, along the way. 

Performance is a key factor in here, so there are lots of optimization to keep the frame count around 60 FPS (You can see on the top-left corner of the video).

This is the fast motion version of me running in the forest (The GIF quality is terrible due to upload size limitation, I recommend you see the video above instead):


Another cool stuff about this, is that everytime I re-shuffle I get different trees.

Now I'm going back to character design, I hope to have to a character editor to show you guys in the next updates :)

The game is 14% complete and 28% ready for alpha release.

Viewing posts 1 to 20 of 41 · Next page · Last page