Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1408739 Posts in 68964 Topics- by 62860 Members - Latest Member: ThvnderLight

October 01, 2023, 04:01:37 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsINZIPID
Pages: [1]
Print
Author Topic: INZIPID  (Read 4078 times)
zipsted
Level 0
**



View Profile WWW
« on: November 29, 2016, 09:29:27 PM »



Inzipid is a game about a dying world. There is no "survival" or "death" in this world.
No one cries, no one breathes. Only the whistling of the wind, the roar of engines and the gnashing of metal.
Inzipid is a 2.5D platformer in an atmosphere of desolation and lifelessness.



Inzipid world is a dilapidating civilization of artificial intelligence.
All life has been destroyed and now only the mechanism remains.
Only one sentiment is left in this world of mechanical creatures. Anger.
And you are one of the last vessels of what used to be called intelligence... and with a soul.



There is no one word in the game. Except of Start/Load/Quit and Inzipid, of course :)
So, if you found grammatic issue here in text, don't be afraid, you will never meet the one in Inzipid.

I'm using Unity engine for development and Blender for modeling. I found them very useful.
All animated objects are animated with Blender, or if it is not applicable for current part of the gameplay, I use Unity scripts.
Effects are Particle Systems or, in case of rain animation for example, the effect is created with shaders.



Since a player conrols the main character all the time, I have to turn to its development with particular care.
I've spent a lot of time on animation already, and I will spend much more in the future.



In the next post I'll write about game atmosphere in Inzipid, vertex shaders, fog, Particle System, and may be about sound :)

Thank you for your time!
« Last Edit: December 02, 2016, 02:24:47 AM by zipSTED » Logged

zipsted
Level 0
**



View Profile WWW
« Reply #1 on: December 01, 2016, 09:35:06 PM »

Hi guys!



Today I'm gonna write about visual atmosphere in Inzipid.

About fog



I'm using standard Unity fog in linear mode. It's fast, beautiful, and very useful.
For example, you can change Fog parameters programmatically.
Code:
RenderSettings.fogStartDistance += Time.deltaTime * 3.0f;
RenderSettings.fogEndDistance += Time.deltaTime * 3.0f;


I didn't choose fog color finally. But anyway I'm sure it will change eventually during a gameplay.

About smoke

In addition to "global" fog I'm using a lot of smoking stuff. These effects are Unity Particle Systems.



About shaders

I need a rain in a few locations of Inzipid world. So I wrote a shader which takes vertex of some object, adds two more vertices in geometry shader, randomly places triangle "drops" in vertex part, and fills that triangle with "drop" texture in fragment shader. And we have good imitation of rain as result.



I think it is not the last shader I developed, but I don't need more for now.

That's all. I'm preparing four more posts about completed things, and then I will start "life" devlog.

Thank you!

« Last Edit: December 01, 2016, 11:46:21 PM by zipSTED » Logged

zipsted
Level 0
**



View Profile WWW
« Reply #2 on: December 05, 2016, 01:13:52 AM »

Hi you!

About camera

Inzipid is a 2.5D platformer. Unlike a 2D platformer, I cannot just link camera boundaries with player.
I need a good picture in each frame, so I decided to map camera position/rotation and player position.


Cyan line is a path of camera, green line is a path of player.

Points between mapped points are calculated linearly.


White line is a path of player, and cyan line points to expected player position on the player path.

Camera has a bunch of events like "shake", "breathe", "drop", etc. Events methods are public, so any other object can call their.



Thank you for your time!
Logged

Nugget Team
Level 0
**



View Profile WWW
« Reply #3 on: December 05, 2016, 07:18:38 AM »

This "deep and empty" world looks so personal, we really like it. How do you do the lights? Great job!
Logged


Afterglow:  Emotional synchronization on a paper train.
@NuggetTeamDev - Facebook
zipsted
Level 0
**



View Profile WWW
« Reply #4 on: December 05, 2016, 08:16:20 PM »

This "deep and empty" world looks so personal, we really like it.

Thank you! Smiley

How do you do the lights? Great job!

Actually it is not a final light set. But for now I'm using one direction light from back to front:


And one more direction light which illuminates only the main character:


Of course, I'm planning to create more complex (maybe "custom") lights for locations inside buildings, rooms, caves, etc.

Thank you for your question!
Logged

zipsted
Level 0
**



View Profile WWW
« Reply #5 on: January 19, 2017, 08:29:36 PM »

Hi!

Sorry for huge pause in devlog. The reason is a pause in development actually Smiley
Plus, I found that I need to change character's armature to Humanoid type (in Unity terms).
It will simplify further development: inverse kinematics, ragdolls, and more semi-automatic Unity tools are working great with Humanoid animated characters only.


Current armature on the right, needed armature on the left.

In addition to new skeleton, I should change main character appearance, but no so much.

Thank you!
Logged

Jason S. Longia
Level 0
***



View Profile
« Reply #6 on: February 04, 2017, 12:48:20 AM »

This "deep and empty" world looks so personal, we really like it.

Agreed, the whole premise alone has my mind swirling with guesses as to how your story will go, individual personal reactions, angry robot backstories, I'm really getting a mad "Fragile Dreams" vibe about this. My brain is ready to explode!...Haha!... or it could've been the warcraft 3 marathon I was doing- Anyways! As well as that rainy sepia tint world. Good stuff good stuff zipSTED!
Logged

Aliases: R3MR pronounced "Reemer or Remmer."
Powerword: Jason S. Longia (lol)

A pleasure to meet you all. I am Jason, an avant-garde composer.

I also dabble in the game making
and art making scene.

Gamejolt: https://remr.gamejolt.io
Soundcloud: https://soundcloud.com/jason-s-longia
zipsted
Level 0
**



View Profile WWW
« Reply #7 on: February 08, 2017, 12:29:14 AM »

This "deep and empty" world looks so personal, we really like it.

Agreed, the whole premise alone has my mind swirling with guesses as to how your story will go, individual personal reactions, angry robot backstories, I'm really getting a mad "Fragile Dreams" vibe about this. My brain is ready to explode!...Haha!... or it could've been the warcraft 3 marathon I was doing- Anyways! As well as that rainy sepia tint world. Good stuff good stuff zipSTED!
Grin thanks!
Logged

zipsted
Level 0
**



View Profile WWW
« Reply #8 on: February 08, 2017, 12:35:53 AM »

Hi!

New character modeling is completed.
Now I'm recreating all animation, and after that I'll post screenshots with new guy directly in the gameplay.
Plus a short story about Inverse Kinematics.





Thank you for your time!
Logged

zipsted
Level 0
**



View Profile WWW
« Reply #9 on: February 15, 2017, 01:48:44 AM »

Hello again!

The character has more passability and now he can overcome more obstacles.


Inverse kinematics usage in Unity is very simple.
I have this yellow/black striped object with two empty objects -- one for each hand.



And a few lines in code:
Code:
private void SetIKHolded (AvatarIKGoal goal, Transform transform) {
playerAnimator.SetIKPositionWeight (goal, 1);
playerAnimator.SetIKRotationWeight (goal, 1); 
playerAnimator.SetIKPosition (goal, transform.position);
playerAnimator.SetIKRotation (goal, transform.rotation);
}

Where goal is Unity built-in AvatarIKGoal.RightHand or AvatarIKGoal.LeftHand (in our case), and transform -- is Transform component of corresponding object (Left/Right Hand Holder) on the yellow/black striped parallelepiped.



That's all. In result we have pretty smooth climbing and hanging animation.

Thank you for your time!

Logged

zipsted
Level 0
**



View Profile WWW
« Reply #10 on: March 02, 2017, 07:57:04 PM »

Hello!
I just had to post it Smiley

He's climbing!



You can notice shitty hands/feet rotation (just look to shadow on the left wall -- ooh, it's creepy), but I couldn't wait to show you the progress Smiley
The next stage: tune climbing and modify camera controller to add an ability to track the character on both vertical and horizontal axis.
In the end, camera will have treelike path form.

So, thank you guys, and to be continued!

P.S. Do you remember, that you will never meet a word in INZIPID game? Please, do not be mad about my grammar :*
P.P.S. Anyway, if you feel sick about my English, please write me, I do appreciate all correction.
Logged

zipsted
Level 0
**



View Profile WWW
« Reply #11 on: March 16, 2017, 08:56:13 PM »

Hi!

Preparing to treelike camera path implementation.
White line from character to round track point indicates the current track point.
Green lines show connected points for the current point. When point becomes huge, it means that it is the most possible next point.



The next step: camera follows the path smoothly and nicely.

Thank you!
Logged

zipsted
Level 0
**



View Profile WWW
« Reply #12 on: March 27, 2017, 06:43:35 AM »

Meanwhile in Inzipid.
First blood.

Logged

zipsted
Level 0
**



View Profile WWW
« Reply #13 on: April 07, 2017, 12:08:31 AM »

Hi!



Puddles

To create nice puddles we gonna use shaders. And fake cameras.


Red surface is our future puddle.

Let's provide to the puddle some information about what it should "reflect".
C# script creates invisible camera for plane reflective object which looks in the oppozite by z axis direction of main camera.
Fake camera renders that inverted image to RenderTexture and shares it with custom shader.


Show all layers

You can notice that there is no fog in reflected image. Rendering fog twice is untrivial task and it will costs us a lot of milliseconds.
So, let's add an emission to puddle. Let it a bit lighter.



Now we will show the closest objects to puddle only.
Just mark close object with custom layer and set Close Objects and Player layer to culling mask for other fake camera.



We removed the hill and useless objects, but now our reflection looks a bit shitty because of white borders around all objects. Let's just ignore that for a while Smiley
The puddle looks unrealistically flat, so we're going to add a ripple. I get a texture with blue noise and include it to reflection projection in shader.


Code:
fixed4 tex = tex2D(_BlueNoiseTex, i.uv);
fixed4 refl = tex2Dproj(_ReflectionTex, UNITY_PROJ_COORD(i.refl + tex.x + tex.y));


Looks better.

Now we found out that the puddle border is too sharp. Let's paint some gradient texture like this:

Use it in our shader and reduce a brightness:
Code:
fixed4 tex = tex2D(_BlueNoiseTex, i.uv);
fixed4 refl = tex2Dproj(_ReflectionTex, UNITY_PROJ_COORD(i.refl + tex.x + tex.y));

fixed4 gradient = tex2D(_GradientTex, i.uv);
fixed4 result = refl * _Brightness + _Emissive;
result.a = gradient.g;


Finally, let's make the ripple more active.
Code:
fixed4 tex = tex2D(_BlueNoiseTex, i.uv + _Time.x / 5);



Thank you!

Logged

zipsted
Level 0
**



View Profile WWW
« Reply #14 on: April 27, 2017, 02:52:48 AM »

Hi!

Just removed "connections hell" using [Any State] in Unity animator.
It's simple and awesome if you have pretty solid state machine.




I'm happy Smiley
Logged

zipsted
Level 0
**



View Profile WWW
« Reply #15 on: May 14, 2018, 11:33:44 PM »

Unfortunately, project is put on hold.
Logged

Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic