Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411276 Posts in 69323 Topics- by 58380 Members - Latest Member: bob1029

March 28, 2024, 12:17:12 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogs[On indefinite hold] Tollfire - First-person Flamethrower
Pages: [1] 2
Print
Author Topic: [On indefinite hold] Tollfire - First-person Flamethrower  (Read 4848 times)
Manamongods
Level 0
***



View Profile
« on: December 04, 2018, 11:58:12 PM »



Burn ice aliens and grow stronger until you can restore earth's temperature
« Last Edit: March 13, 2023, 04:47:16 AM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #1 on: December 04, 2018, 11:58:27 PM »

Quick WIP concept sketches:


A totem-pole-like enemy



An enemy that makes "ripples" of ice spikes on the ground when it falls itself, but underneath is its exposed heart:





A sawblade roomba, kind of. Only drives toward you if you look at it, and inside it is everything it has collected, including perhaps you:



A "screamer" that notifies your location to others



A gigantic prince rupert's drop kind of enemy. This race only grows taller and stronger while the spikes on their head are vulnerable. Shoots lasers from the spike things:



A ghost snake/worm who only collides with you, not the world. Bounces you up from below, kills you from falling on top of you:





The mother in a family of blind monsters, uses bent cleavers to hear your location better, but can't do that while she's trying to slice you!:
[/center]




The game will run on low-mid+ tier PC (At least around GTX 1050 TI, which I have), probably also consoles such as PS4 and Xbox 1, but maybe only after the PC release.
« Last Edit: November 05, 2019, 12:00:51 PM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #2 on: December 13, 2018, 02:10:50 AM »

Today and yesterday I made this "screen shattering" system for getting physically hurt, but at the moment it's more like the shock from getting hurt, because it returns to normal much faster than you heal. Needs tweaking though, e.g. it gets way too purely red at its maximum.
The lines in the gaps are supposed to be "stitches" pulling you back together.




Logged

Manamongods
Level 0
***



View Profile
« Reply #3 on: December 14, 2018, 11:21:13 AM »

In the middle of making a deformable snow surface.

The shader is missing pretty much every feature, it's not even altering the normals, because for that I'd use a geometry shader, which is incompatible with surface shaders (so I'd need to "write the lighting by hand" or limit it to one light).

I've been considering starting to use a custom shader graph though, even though I'd need to redo some stuff to use it when I move to Unity's HD Render Pipeline when HDRP is finished enough for me to integrate my OIT and art style.

So right now it just darkens the vertices the lower they are, using the regular shading model, so lighting is all messed up.

(And if there's no way to hide the pop-in using dither crossfading, I'll definitely make my own terrain system. Using unity's built in one is already limiting some of the features I want, such as I would like to cache useful information, instead of even needing to use a geometry shader to get semi-flat shading using unity's terrain. I can't even use unity's terrain trees, because they'd be unburnable, so there's hardly any reason for me to stick with Unity's.) (and it might be impossible to stop the premature culling (I displace the vertices upwards, which the terrain doesn't take into account when calculating bounding boxes) and terribly short distance that it switches to lower Level-Of-Detail chunks). It might be worth experimenting with using mipmaps of the rendertexture for lower LOD terrain chunks, because as it is now it's really bad at anything but close distances.


I will soon add the same kind of system on the top of roofs also.



(Yes, I messed up the sphere thrower, if I make the sphere too big it crushes me  Shrug)









« Last Edit: December 15, 2018, 01:07:03 PM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #4 on: December 18, 2018, 04:13:55 AM »

I've been taking a break from the snow system.
Working a bit on the GUI. It will probably be further polished or redone later, but this makes it nicer to look at, at least for the moment.

The colors of the flamethrower's fire (the fire from burning objects will look pretty normal compared to the flamethrower's) has already been decided to probably flow between peachy colors and the current "rosey" colors (dark red and pink), but that isn't really so possible to do using only the particle systems in Unity (because the loop would be very apparent), so I'll modulate the colors with a script. Therefore the GUI is currently only using the rosey kind of colors.

The ammo count in the bottom right will probably be more in the shape of an orb.



There are 2 "health bars":
    Temperature: You lose it from cold attacks, or to cold things in general
    Physical health: You lose it when you get hit/take kinetic damage, get cut, etc.

When either bar gets to 0, you "die" (I will make a post later about what happens when you die, but you come back to consciousness sometime later, probably a bit further behind in the world (some "progress" lost), or stuck in a cage or coffin, etc.)

Since both bars are kinda connected in that way, they are animated to somewhat indicate that by "sharing the same angle", you'll see what that means.

There is currently nothing that really drains heat, but when there is, I will add a visual effect that makes the screen more frosty and cold looking, similar to the "screen shattering" system for physical damage.

At one point in the game, the "shield/force field" will be unlocked on the flamethrower ("ammo has reached high enough levels that it's not so wasteful to have enabled"). It regenerates faster than the regular health bars, and it acts as a buffer to absorb damage instead of the health bars.
   




« Last Edit: December 18, 2018, 04:34:46 AM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #5 on: December 20, 2018, 10:54:02 AM »

Made some hooks from the flamethrower to "explain" its very fast rotation (although at the moment it rotates completely in sync with the camera, which it pretty soon wont quite do) (and it will make some sound effect when moving too). The hook system is highly customizable, so it's not final yet.
Storywise, it helps the flamethrower from being too heavy for the kid, and it's good for his survival to be able to react quickly, instead of slowly turning the huge flamethrower.


Made the sound from air resistance pan somewhat, depending on the listener's rotation. Might be that the sound effect only varies in volume, not pitch or anything else, but it seems to sound very annoying if the pan is too strong. Probably just annoying in general in real life too, being blasted with wind in only one ear. (Although I particularly despise strong panning, so it might just be me)


I've stopped using Unity's CharacterController as the temporary solution it was; I basically made it simulate a rigidbody, but it can never simulate collision interactions with rigidbodies accurately, so now the player controller uses a rigidbody.

And for that I've modified the Unity standard asset: RigidbodyFirstPersonController.cs script, to allow it to climb stairs/ledges (it could barely do that before), and have a lot more control in general.

Though I do still use a temporary CharacterController for the "teleportation" part of dashing.







PS: I got a bit sick, guess I shouldn't eat so much cake, but it was some very good cake
« Last Edit: November 05, 2019, 11:40:18 AM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #6 on: December 22, 2018, 10:27:49 AM »

I decided to work on the snow shader, so it has most of the final features. I modified Catlike Coding's wireframe shader (as well as several CGInclude files) (because it was almost exactly like Unity's standard shader, while being compatible with a geometry shader (so that it can render low poly, as well as use approximated proper normals when the snow is deformed)). When I switch to HDRP I'll need to redo some of it though.

I will probably eventually make my own terrain system, especially because I don't think I can really stop Unity from culling the chunks too soon (because the snow surface is pushed upward, when Unity doesn't expect that). I could technically have 2 gameObjects, one for the terrain collider, and one a little higher up, used for the terrain rendering, and instead displace the vertices downward, but that might still cull prematurely if the snow is taller than the crouching height of the player. It looks a bit better now that I lowered the pixel error (how soon the chunks change to lower LODs, I thought I did that last time), but I'm still not satisfied that the chunks pop in and out within a frame.

There are a few options for chunk systems I can make:

   Almost purely tesselation: The gpu creates the triangles at higher densities near the camera, but if you've seen wireframe videos demonstrating dynamic tesselation levels, then you know the triangles really move a lot. Since the art style is kind of low poly + flat shading, and I kind of consider each triangle to be independent, it would in theory be pretty obvious to see the triangles slide around when the player moves.

   
   I could make the terrain system as described here, with minor tweaks (Since my game's world will be very big, I would instead procedurally generate the meshes, like Unity does, rather than store all the LODs as meshes):
      https://www.classes.cs.uchicago.edu/archive/2015/fall/23700-1/final-project/chunked-lod.pdf
      
      The meshes are identical at the moment a chunk splits into 4 smaller chunks (doubling the triangle detail level), or when 4 join into a lower resolution, bigger, chunk. The vertices of the higher resolution mesh simply "pretend" to look like the lower resolution mesh, to avoid a pop-in, but as you get closer, the surface deforms to how it actually looks at that detail level.
         It might have a problem with performance because of my deformable terrain surface. So it might need twice as many texture reads (into the deformed snow heightmap) per vertex than it needs now, or else it would necessitate a geometry shader, which I've heard have performance impacts(?), which of course I want to avoid as much as I can.
      
      
   Dither crossfading chunks: The crossfade would definitely be time-based, not distance-based, but it still might "render" (clipping the dithered away pixels avoids some of the work) up to twice as much geometry at any time, depending on how fast the player moves. I don't think it's as pretty as the previous method though, but it's probably the one I'm gonna go with.
   

If I do stay with Unity's terrain system, I'll have pop-in, less control over how the surface deforms (e.g. soft vs hard snow), probably still have premature culling, and also I'll be unable to cache some information (and therefore use a geometry shader).
   
   

I haven't yet made snow deformation sound effects though (except for the placeholder footstep noise)

   



« Last Edit: November 05, 2019, 11:39:45 AM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #7 on: December 24, 2018, 12:59:38 PM »

I'm working on the rendering of the heat-orbs, specifically their "faces" (the faces will be used as their weapon "icon", and will generally look a lot like how the weapons work. For example, a thin laser might have one thin eye/shape, or a chainsaw might have some spiky teeth).
The system supports animation of each of the shapes, but I haven't yet made the editor to allow easy animation for these test faces.


These faces are shown in 3 places:
   - On orbs that haven't been integrated into the flamethrower yet, found around the world
   - On the flamethrower's big orb. Here there will be many faces floating around, because they are all part of the orb.
   - There are 2 weapons that can be selected at any time, used with left and right click. The faces of these orbs will be shown in the bottom of the screen to indicate which weapons you have selected, alongside their respective "staminas" (orbs get tired if you use them continuously, so they have small bars that recharge slower than you can use them. It only limits your damage output to the recharge rate, so you get a boost while you use up a fully recharged stamina bar)


Each face has a weak and a strong state.
The faces swing up and down a little between the states when idle.
The strong state is most visible when either:
   - the ammo/fuel the player has is near the current maximum (ie. each orb is near their individual capacity limits)
   - when a specific orb is being used as a weapon, therefore the other orbs are weakened and the power is concentrated through the active weapon



Sorry about the terrible framerate, I only have my weak laptop here on vacation



   



   
   
Here you can see the wireframe of the meshes. It displaces the vertices a bit closer to the camera, to avoid being z-clipped by the sphere, and it fades away near the edges of the sphere (at sharp angles with the camera), to hide artefacts:
   
   

« Last Edit: December 24, 2018, 01:27:12 PM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #8 on: December 26, 2018, 09:35:50 AM »

I've made some small updates:

    - The ammo counter is animated now
    - Added screen shake
    - Made the crosshair follow the flamethrower's pointing direction (using a raycast). That crosshair is where the flamethrower will shoot toward, so it helps with aiming while turning
    - Put a "band-aid" over the premature culling of the snow chunks, by growing the culling matrix of the camera. If I stick with Unity's terrain, I suppose this probably works well enough
    - Etc.




« Last Edit: November 05, 2019, 11:38:24 AM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #9 on: December 28, 2018, 08:00:51 AM »

The world (or at least the areas the game takes place in) have some dark and mysterious monstery stuff going on in the dark; in shadowy places. So I've added a "darkness" post processing effect. It is of course extremely customizable, and for right now I'm just using the temporary fire vein bezier texture (which I also use with many other things, like the edges of the healthbars and screen shatters, so it's proving to be very versatile).

It's a somewhat subtle effect, so it can be difficult to see on video, but it's definitely visible in-game.







The snow deformation system always had a ripple system running underneath, but now I've made it visible through some "particles". At the moment it's a geometry shader that re-renders the terrain, and depending on the ripple value of the snow deformation texture, it scales and raises the triangles up, as well as billboards them to be isosceles triangles. Might not always be isosceleses, or I might make it more dependent on the actual terrain instead of forcing it to any specific shape, but this is fine for now.

It also depends on the material used to render the deformation object by the deformation camera, so I made the player hardly kick up any snow because that's not how legs work (and it's annoying with snow flying all around when walking).

The snow "particles" are unlit, as everything transparent is right now (because it's using weighted blend OIT, so I'll need to either make a shadergraph master node, or modify and use Catlike-Coding's shaders), so it looks very different and un-reactive in color compared to the snow surface below.
And also, the texture used isn't a good one, so be warned, it's uglyyy, but nicely animated.

Snow still doesn't make sound yet, because the system for that is dependent on another system I'm pretty sure isn't functional yet.



Logged

Manamongods
Level 0
***



View Profile
« Reply #10 on: January 02, 2019, 01:02:26 PM »

I'm working on the first monster, making some basic enemy AI tools and framework, as well as learning some assets.

The basis of the monster is a "hollow" dodecahedron, with the top and bottom holes for lasers, and the rest of the holes for tentacles/blades. There is a wobbly spinning "cage" around it, but unfortunately it doesn't line up with the holes on the dodecahedron though.




The blade mesh is a placeholder, but it is pretty much the final shape, it just lacks detail. Mesh wobbling is currently done on the cpu, and it's awful for performance, but I didn't want to remake it in shaders yet (I did think it would be terrible done on the cpu, but it's worse than I thought (couple thousand verts, each with 2 octaves of 3d or 4d simplex noise of 1 or 3 samples (if used to push along the normal it only needs one)). It will still be useful in animating the "darkness glow" billboard quads around the monster though). Fog is inconsistent (only seems to affect the trails), fog particles are way too nearby and visible. Player death is disabled. Most assets (sounds, textures) are placeholdery.
There is no death animation yet, which will just be the monster rectracting its limbs, back inside. I also didn't realize there is a missing leg until just now. And since the collision with the player isn't continuous dynamic, the player can just "phase through" the fast moving blades sometimes.


There are 3 phases based on the health of the guy:
    66 - 100% of health: 1 laserstrength down at you.
    33 - 66% of health: 3 laserstrengths down, 2 laserstrengths up (to avoid flying into the air).
    0 - 33% of health: Has blades instead of tentacles, about 1 laserstrength down to sustain hovering, several laserstrengths up or down while angling the blades to generate spin.






« Last Edit: November 05, 2019, 11:35:38 AM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #11 on: January 11, 2019, 04:58:23 AM »

I did some work on making snow on top of houses, it works by (simplified):
   Subdividing large triangles
   Raycasting a few times upward (technically downward because raycasts originating inside triangles act weird, and technically spherecasts not raycasts) to find if the triangle is blocked by a roof
   Removing triangles that have 0 height on all 3 of their vertices
   Welding vertices
   Limiting the max height depending on some raycasts downward at around -60 degree slope (so that the height of snow on top of poles isn't a meter thick)
      Seems to a bit buggy, because this doesn't completely eliminate the issue, but in theory it shouldn't have problems so I'll look into it again.
      
   Eventually I'll probably do some decimation, since the geometry of the snow is dependent on the roof below, so if there's a highly defined feature like a window on the roof, the snow can sometimes look weirdly similar to the shape below.
   
   I haven't added the snow deformation or proper rendering to it yet, even though it's 90% ready for it.
   
   
   



I've mostly been working on refactoring and improving interfaces, especially to do with automated things like:

   Functions (regular: f(x) = y, and gradients: f(x) = color)
      Functions will generally be used in the editor, and they're made with convenience in mind, but there's nothing terrible about their performance, so they can also be used for animation patterns.
      
      There are a few variants, including linear (slope and y-intercept), "mathy": sine, cosine, tangent, ping-pong, or remainder, using Unity's AnimationCurve, constant value (basically just a variable, but the wrap mode can change it to act somewhat differently), heightmap, etc.
         
      
   Random 2D point distribution patterns (for now there is just radial (radius by angle function, and random distance) and planar (random distance along x, random distance along y, mirrored x, mirrored y))
   

   


   
   
   
   Automatic texture generation and filtering (My art style is stylized, so it's feasible to use generation, and it would be a pain not to, especially for fiddling and polishing)
   
   


   
   
   
   As well as digitalizing some of my paper notes. I'm usually not very organized with sketches and ideas on paper, but they need to be sorted and readily accessible, so I cut and categorize the scanned papers.
« Last Edit: November 05, 2019, 12:07:31 PM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #12 on: January 15, 2019, 02:07:18 AM »

I got inspired to work on the theme of the world, so yesterday I started learning to use blender to make this flying advertisement TV. Even though this model is very simple, blender is surprisingly easier than I thought, and the interface is very efficient!

I won't make most of the 3D models myself, but will instead kitbash and remix what I can find, to save time; but I will do the modelling in cases like this, when it's impossible to find what I'm looking for.

The eye/camera is not rigged yet, and the whole thing just wanders around with a blank screen (instead of advertising to the player). The speaker is somewhat placeholder, I was a bit lazy and didn't do much with it yet.



« Last Edit: November 05, 2019, 12:08:12 PM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #13 on: January 22, 2019, 10:46:19 AM »

I'm in the middle of working on the general user-interface (GUI and gameplay related stuff). A lot of the parts to it are disconnected from each other, unpolished, and there are many bugs, but I figure it's not much use to update the devlog only when I've finished this monstrosity.


I made the orb-face/icon editor gui, which means I can easily build up the 30+ (so far I've come up with around 30 types of weapons) orb icons and their strong/weak states and transitory animation. I haven't used it yet though.

I made game GUI stuff. The weapons tab will be where the (up to 5) "weapon-set"s are assigned their weapons. The Upgrades tab has upgrade toggles on the left (forgot to add a dummy one in for demonstration), and a graph showing the flamethrower's unlocks (which includes thrusters, shield, and vehicles; based on how much fuel the flamethrower has). Map tab will include quests, and of course the map of the game area. The invention tab is where the player can build upgrades/weapons using ice-blood they collect. The crafting tab is where technologies found in the world are "fixed", so that they can withstand the cold (and heat) and be used.


I'm moving over to the proper player controller (away from the prototype one), which means flamethrowing and other placeholder features are currently unimplemented.


Since I've been working on the weapons, and wanting to animate the ones used by the third arm, I'm currently making the robotic wobbley arm on the left of the screen; and to know where to put the arm, I put in the WIP protagonist model for scale. That model is straight from MakeHuman, which doesn't have many clothing and hair options.
And sadly the flamethrower itself will probably not be made very soon, because the shape of it could be drastically changed if I need new functionality to it.




Logged

Manamongods
Level 0
***



View Profile
« Reply #14 on: February 19, 2019, 12:18:50 PM »

I've made some general mechanics related stuff, such as weird alien plants, or obstacles such as spikes.

I made a variant of the "spikefaller" alien, but it is a "dumb" version, with a rhythm to its falling, instead of reacting to the player. So it's more like a plant, or machine, rather than sentient like the real ones will be. It's still missing half of its functionality though... namely teleportation and actually being able to be killed.

Here is an oldish video demonstrating some of that stuff. They're very WIP still, and I really need to add sounds to them:







The past few days I also made a "sniper" turret. It can't see enemies from that far away, but it is pretty much only powerful at a distance, because of its long barrel (the player can just go close to the pivot and it can't do any damage), low FOV (which becomes quite a large effective area at a distance), and long reload times. It's technically not really a weapon against external enemies, but more a tool to police the citizens.





And for that turret I needed to redesign and re-code the AI targeting system, because the player is no longer the only possible target for these enemies. These turrets (as well as other military robots) are designed to keep the people in check, which means not carrying weapons (and the player constantly carries the flamethrower), but they also want to fight the invading aliens. And the aliens want to fight the player as well as these robots, and some (dishonorable) aliens are so bloodthirsty they fight even their own kind.

I'm not entirely sure if that AI system is fully working yet though, but it's a pretty cool one because it remembers the last seen position of the target, as well as a time-averaged velocity (to sort of estimate the general direction the target is going, rather than remembering only the final seen velocity), and it updates its memory of the last seen target's position with that velocity to imagine where the target might be currently.



I made some tree 3D models, their art style is mostly final, but it might need to have higher detail or a bit more realistic (if it clashes too much with other parts of the game's art style and detail level):

https://www.youtube.com/watch?v=rjBKf8I_XH0



I made twinkling stars, for night scenes:

https://www.youtube.com/watch?v=w3iLn95573w



I also updated the snow rendering, making the particles use actual particles, new sparkles, and texture related stuff:

https://www.youtube.com/watch?v=0Rjqk6gId2o





(And I've also made a lot of 3D models for not yet implemented things)
« Last Edit: February 19, 2019, 12:34:41 PM by Precision Cats » Logged

Pixel Noise
Level 10
*****



View Profile WWW
« Reply #15 on: February 19, 2019, 05:32:28 PM »

Hey this is really cool! Nice work so far.
Logged

Pixel Noise - professional composition/sound design studio.
 https://soundcloud.com/pixel-noise
 https://twitter.com/PixelNoiseMusic
 https://pixelnoisemusic.bandcamp.com/

Recently completed the ReallyGoodBattle OST!  https://www.youtube.com/watch?time_continue=2&v=vgf-4DjU5q
Manamongods
Level 0
***



View Profile
« Reply #16 on: February 21, 2019, 10:16:14 AM »

Thanks Pixel Noise!


I updated how the vision cone looks, especially because it was very difficult to see which direction it was going, outward or inward.






I always seem to forget to show something I make, so here are two instances of that:

The flamethrower has a "scope", which is like essentially looking out through the nozzle:



Logged

Manamongods
Level 0
***



View Profile
« Reply #17 on: February 21, 2019, 10:17:00 AM »

And there are these hazards:



Logged

Manamongods
Level 0
***



View Profile
« Reply #18 on: February 26, 2019, 02:15:43 AM »

I've been on a break, playing video games with my brother mostly, but I had some time to work on the proper flamethrower model. You'll notice I forgot to fix the pivot point of the left thrusters though, and some recoil-preventing thrusters seem to be missing as well (probably because blender's dupli-faces (and probably dupli-verts) doesn't import into unity properly (their positions are all the same, maybe they're hidden inside the flamethrower)):



Logged

Manamongods
Level 0
***



View Profile
« Reply #19 on: March 05, 2019, 11:46:09 AM »

I added the new flamethrower, and it no longer uses a physics joint. I might go back to a joint, but it doesn't give as much control as faking it, at least not as easily.

I connected the hands to the flamethrower with IK, the code from here helped set it up:
https://forum.unity.com/threads/set-up-ik-in-editor.332035/

There is now a "dark thruster" ring to explain the rotational stability, replacing the hooks from before. The hooks had potential to look pretty cool, but I found it a risk that either: it's too transparent to see how nicely it animates, or it just gets in the way. And if I made the hooks shorter, their velocity prediction math only went so far to create a continuous, seamless "hook space" (each general direction has a hook, no excessive stretching after the player slows down (otherwise they again are too long and get in the way)). I didn't want to enter the rabbit hole of coding and fine-tuning a million different scenarios of player movement. The hooks are already finding use elsewhere anyways.






I also upgraded the screen shattering pattern:






This is an older video, it's the vacuum monster, which I'll soon be adding more functionality to:

https://www.youtube.com/watch?v=FkxmOr60TgE
Logged

Pages: [1] 2
Print
Jump to:  

Theme orange-lt created by panic