Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411517 Posts in 69377 Topics- by 58431 Members - Latest Member: Bohdan_Zoshchenko

April 28, 2024, 12:48:30 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsWormentum: 2D momentum-driven physics-based puzzle platformer
Pages: [1]
Print
Author Topic: Wormentum: 2D momentum-driven physics-based puzzle platformer  (Read 805 times)
Manamongods
Level 0
***



View Profile
« on: March 23, 2023, 01:14:08 PM »

Hi everyone!



I've been working on this game since September 2021, so a little over one and a half years, although I took around 3 or 4 months to work on Asset Variants instead.

There are 2 "branches": Human, and Nature. In each branch you play as a separate "worm" character, with separate progress and cosmetics. You can switch between the branches whenever. The goal is to complete the levels in each branch until the worms have traversed far enough to meet up. When that happens, the game is over, although I might make a third Alien branch which will then unlock. After the game is "completed", nothing happens to the playability of the levels.





Each branch has separate "areas", which contain the levels. The human worm collects up to 3 golden hats per level, and occasionally cosmetic hats, and the nature worm collects golden fish, and occasionally cosmetic naturey items. The cosmetic collectables show up on the character worm in the levels, but this can be disabled by tapping on their icons in the areas.

Story:
    There is almost zero story in this game, it's about as gameplay-centric as it can be. I do plan to add small squiggly "spectator" creatures that reside in all branches, to give more life to the levels, but other than that the only story is that these amorphous worm entities vaguely representing "Humanity" and "Nature" travel and meet; the Human worm travels rightward, and the Nature worm leftward.

Progress:
    A lot about the game is done, particularly the foundation, most of my job left is to:
  • Put together many more levels with the prefabs I have.
    Currently there are: 9 nature levels, and 2 human levels.
    My plan is for there to be 8 levels per area, and for a reason I'll explain later, I want at least 10 areas in the human branch, and as such also 10 areas in the nature branch.
  • Create more obstacles and decorations as needed/when desired.
  • Put together the areas that contain the levels, and also the ending location where the worms meet.
  • Add more sound effects where they are missing
  • Add "spectator" creatures everywhere
  • Consider if I want to add a third Alien branch that unlocks after the other 2 are completed.
  • Decorate some more!

Target Platforms:
  • Windows/macOS/Linux
  • Android/iOS
  • Xbox/PlayStation
  • Switch, depending on how fast the switch is

Tools:
  • Unity and some of their packages
  • PixaFlux - for generating and modifying textures non-destructively, with nodes! (Bless this program, it's a godsend  Tears of Joy)
  • AudioNodes - I use this for non-destructively synthesizing audio clips, usually for my modified physics engine "PP2D"'s sound simulation.
  • Affinity Designer - for the 2D art
  • Blender - for the 3D models used in the areas, and sometimes some 2D stuff as well
  • Audacity - sometimes I use this for destructive audio work, such as normalizing audio clips that Unity can't  Facepalm.
  • Incompetech's music
  • Code that I've made and found over the years.
  • GitHub Desktop
  • Asset Variants, ah yes such a nice tool, I wonder who made it Who, Me? - Although it has taken time away from developing Wormentum, it has made some parts of development more enjoyable, namely PP2D's sound settings assets, which have many settings, most of which are shared. The break also had me re-evaluate the quality of the levels I made previously. Conclusion: they were dreadfully boring.
  • Unity Asset Store assets such as Rainbow Folders and probably AraTrail.

I plan to use this devlog to retrospectively detail how I did things with this game or the code behind it, as well as show the new things and levels I make. I might give out some code as well.
« Last Edit: March 23, 2023, 04:37:57 PM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #1 on: March 23, 2023, 04:09:36 PM »

I call the physics engine Precision Physics 2D, or PP2D for short. It's based off of Liquidfun, which is based off of Box2D.
I plan to make some in depth posts about how PP2D differs from Liquidfun in the future, but here is an overview:
  • Sound simulation. PP2D uses looping audio clips I've synthesized using AudioNodes to make sounds when objects collide, or "air resistance" sound when objects move through the air, or joint force sounds.
  • Quadratic bezier collision for polygon colliders to be able to roll smoothly.
  • Particles when Colliders impact each other (yeah this one is common practice).
  • New features for joints. For example I brought over some code from b2WeldJoint to b2RevoluteJoint, so that hinge joints can have softer angular constraints.
  • More "realistic" collision resolution. PP2D uses a sort of "Young's modulus", with elastic and plastic deformation accumulation, to resolve velocity contacts, which allows collisions to be "softer" (spread out over frames) and still be bouncy (I'll explain later). The step to step "report" of the simulation impulses are helpful in the audio simulation as well. There's also a "Sharpness" distance.
  • (Rigid)Body scalers. Instead of only position and rotation, it now also has a (one dimensional) size, which allows things to scale in and out, and apply the forces you'd expect.
  • Collider z position and "Thickness" (scale along the z axis), which means colliders can ignore each other if they don't overlap along the z axis, without manually specifying this with "layers". This also conveniently scales Collider masses.
  • Features for Liquidfun's particle simulation, some of which are:
    • Particle densities (heavier and lighter particles, instead of a constant mass per particle).
    • Particle scalers (from 0 to 1), this helps when the worm eats the food. Cannot be bigger than 1x the size because of Liquidfun's spatial partitioning Sad
    • Stickiness: Pairs (particle-particle distance joints) are created when a sticky particle hits another particle.
    • Pairs and triads (particle-particle-particle triangular distance joints) can break apart if the particles separate too far apart from each other.
    • "Spin" calculation - calculates an estimation of the particle's "angular velocity".
    • Viscous particles can spin (this requires "Spin" (angular velocity) information to solve the viscous forces without slowing the angular velocity)
    • Split apart viscosity simulation to sideways/inward/outward, so that viscosity simulation can be used for friction forces if I want (this is done by inward and outward being 0, so viscosity is only solved sideways (tangentially)).
    • "Air resistance" - Basically the same as linear drag for Box2D Bodies, but for particles. I added this so that in the Nature branch, the particle-based gravity-less clouds won't just drift off into the distance forever if you hit them.
    • "Thickness" (along the z axis). Scales down the forces if a Collider is less z-thick than the Particle is, helpful for the worm to easier swim through the food as he's chowing down, while the food will still sit stably on the ground/plate/bathtub.
    • Option for hexagonally spaced particles, instead of square grid spaced particles.
    • Some honestly pretty important stability fixes for Liquidfun's ParticleSystems
  • A lot of reinventing the wheel as well, so that PP2D has similar usability as Unity's Physics2D :/
  • Fiddling around with my many new settings, and making compromises, sigh

I adored Jelly Car 2 when I was a kid, so I made a few of those features specifically so I could make a JellyCar-like jelly car out of particles. BTW it turns out Walaber made a new JellyCar game so go check it out if like me you didn't know until now!
« Last Edit: March 23, 2023, 04:14:52 PM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #2 on: April 21, 2023, 06:12:15 AM »

I've now uploaded my first video devlog which you can view below. Text based devlogs if any will be rare from now on.



« Last Edit: April 21, 2023, 06:45:04 AM by Precision Cats » Logged

Manamongods
Level 0
***



View Profile
« Reply #3 on: April 26, 2023, 10:39:46 AM »

In this devlog I relearn the FontMaker script I made fonts with back in 2017, so I can add some characters I never bothered to back then:


Logged

Manamongods
Level 0
***



View Profile
« Reply #4 on: November 21, 2023, 08:21:02 AM »

The past 2 months I've been working on moving away from Unity. Over the years I've made a lot of editor tools for use in Unity, and I found that Godot didn't really suit my project, so I decided to make a custom engine that has all the runtime features that I use in Unity, and to which I would export my game to instead of having Unity build the project's executable as normal. That way I could keep using the editor tools and overall familiarity of the Unity Editor for my current project (Wormentum), with some side benefits like performance improvements (at least I expect so).

The engine I'm making is built on The Forge: https://github.com/ConfettiFX/The-Forge

For full details you can watch this video:



« Last Edit: November 23, 2023, 04:45:20 AM by Manamongods » Logged

Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic