Work in progress

A place for people with an interest in developing new shmups.
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Work in progress

Post by DyingIsFun »

Hey all,

I am working on a project and wanted to share some footage w/ the community. You can see it here.

In this clip, I'm just spawning some enemy types one at a time to test their behaviors. Please let me know if you have any feedback!

Notes
  • 1. All art is placeholder
    2. All sound is placeholder
    3. There's no level design yet
    4. All bullet patterns are subject to change
User avatar
9uile
Posts: 50
Joined: Mon Jan 13, 2020 4:57 pm

Re: Work in progress

Post by 9uile »

This is really nice. I see that ddp may be your model (at least for now) :)
I hope further videos !
User avatar
heli
Posts: 585
Joined: Fri Sep 13, 2019 3:58 pm

Re: Work in progress

Post by heli »

How did you make it, what language or you use a software ?
It looks like you copy complete dodonpachi and change it ?, how u do that.

You should add many enemys in big waves as stress test.
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

heli wrote:How did you make it, what language or you use a software ?
I am using Unity and C#.

I will post more vids of my progress as I make it :D
Ark
Posts: 49
Joined: Sat Jan 16, 2021 1:28 pm

Re: Work in progress

Post by Ark »

nice setup
User avatar
Leander
Posts: 62
Joined: Thu May 09, 2019 1:23 am
Contact:

Re: Work in progress

Post by Leander »

Nice prototype, looks like you have that shmup feel down.
You're the dev behind Primal Light, right? I am curious why you moved away from Godot?
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

Leander wrote:Nice prototype, looks like you have that shmup feel down.
You're the dev behind Primal Light, right? I am curious why you moved away from Godot?
Thanks, Leander.

Yep, Primal Light was my previous project, made by me and my good friend. I am very fond of Godot and plan to use it more in the future, but I decided to start prototyping this in Unity just to learn more about that engine. I eventually hope to make a living doing game dev, so am trying to diversify my skillset a bit, heh.
User avatar
heli
Posts: 585
Joined: Fri Sep 13, 2019 3:58 pm

Re: Work in progress

Post by heli »

Primal light looking good.
I am sure this game will be good also then.
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

Made some progress. https://youtu.be/nziLd5dPAgs
User avatar
9uile
Posts: 50
Joined: Mon Jan 13, 2020 4:57 pm

Re: Work in progress

Post by 9uile »

Your progress are fast ! Now it's a bit Ketsuish :)
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

Stress testing some bullets. https://www.youtube.com/watch?v=t7Ae3paYYLU
User avatar
9uile
Posts: 50
Joined: Mon Jan 13, 2020 4:57 pm

Re: Work in progress

Post by 9uile »

What is the maximum bullets to have an impact of the framerate ?
(i should redo a stress test in my project because i don't remember the max value :) )
Here, i have about 250 but it wasn't a stress test. The fps was wrong because the video was captured directly in unity editor.
(at 01:25: https://www.youtube.com/watch?v=3MEfBRKQT14)
Do you have an active collider on each bullet ?
I heard that it can reduce the perfs. Some people use a colliderless method.

Are your bullet sprites animated with a script or with the unity animator ?
I wonder what is the best option for performances.
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

9uile wrote:What is the maximum bullets to have an impact of the framerate?
In the video I posted above, I only have around 600-700 bullets on screen, but even at around 2,500 bullets, the project runs well above 60 FPS, even in the Unity editor.
9uile wrote: Do you have an active collider on each bullet ? I heard that it can reduce the perfs. Some people use a colliderless method.
I do not have a collider on the bullets. My EnemyBullet class is a simple class that doesn’t even inherit from MonoBehaviour. The only attributes it has are pos, vel, rotation, speed, and reference to animation data (more on that below).

I received a recommendation in another forum post here that Collider2Ds were blazing fast, especially if you have a RigidBody2D on the object with them, but I noticed performance issues when I started putting hundreds of bullets on screen. That said, it wasn’t just the physics causing issues. Even with an object pooling system where you activate and deactivate objects rather than instantiating and destroying them on demand, the activating and deactivating eats a bit of performance. Similarly, I found when using the profiler that Animator updates were eating up quite a bit of performance when there were hundreds of bullets on screen, all animated.

That brings me to your final question.
9uile wrote: Are your bullet sprites animated with a script or with the unity animator ? I wonder what is the best option for performances.
I found that using the native Unity animator functionally was not the best option for me. I discovered this video on YouTube where Code Monkey uses the preview ECS package to render 100,000 animated sprites. I first tried following that method directly, converting my project to ECS, but ultimately I stalled out, so went back to normal Unity object oriented stuff. I nevertheless managed to port the method over and it works well.

Basically, rather than have a SpriteRenderer and Animator on a GameObject, I have another bare bones class called AnimationData that contains info like frameCount, frameDuration, currentFrame, uv, trs_matrix. Each bullet has a reference to an instance of this data.

The data itself is used by a BulletRenderer singleton script on a GameObject in my base scene, which has a reference to a single quad mesh and some simple materials which contain my bullet spritesheets. Each frame I update the bullet positions, I also update the anim data for each bullet (by altering the trs_matrix to make sure the draw follows the bullet and so on), along with checking to see if I need to advance the current frame. Then, in my BulletRenderer, I batch the AnimationData into chunks of 1000 and use Unity’s DrawMeshInstanced() to render them from the single mesh.
User avatar
9uile
Posts: 50
Joined: Mon Jan 13, 2020 4:57 pm

Re: Work in progress

Post by 9uile »

Thank you for sharing your experience.
I'm waiting the next prototype video :)
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

Working on tank behavior. It's harder than I thought to create a flexible system. https://youtu.be/QTHkVzPNuFs
User avatar
Lost Machine Games
Posts: 21
Joined: Sat Jan 02, 2021 12:22 am
Contact:

Re: Work in progress

Post by Lost Machine Games »

Great work! This is looking really nice. Congrats.
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

Lost Machine Games wrote:Great work! This is looking really nice. Congrats.
Thanks! I am excited for TechBeat Heart.
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

I added a training menu. Also working on the behavior of enemies that home toward the player after spawn. https://youtu.be/xGOd0OIko1s
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

Large enemies w/ bullet cancels. https://youtu.be/gR4gCZeVGP0
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

User avatar
9uile
Posts: 50
Joined: Mon Jan 13, 2020 4:57 pm

Re: Work in progress

Post by 9uile »

Still nice !! I like to see your updates. You are really close to a keitsui/ddp clone. Do you plan to put more personal ideas or mecanics soon ?
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

9uile wrote:Still nice !! I like to see your updates. You are really close to a keitsui/ddp clone. Do you plan to put more personal ideas or mecanics soon ?
Thanks. I eventually plan to add my own spin on things, but for now I mainly adhering to the Cave mold just so I can learn technique.
User avatar
heli
Posts: 585
Joined: Fri Sep 13, 2019 3:58 pm

Re: Work in progress

Post by heli »

The text in screen is to big, have you tried any smaller ?
Ok i seen cave games that spam the whole screen with crap, maybe you like that.
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

Walking tank, like in Raiden II / Raiden DX. https://youtu.be/prMG1pt51dA
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

Testing random combos of bullet patterns for bosses. https://youtu.be/_Y8loePPFSI
pieslice
Posts: 200
Joined: Sat Mar 01, 2008 12:15 pm
Location: Finland

Re: Work in progress

Post by pieslice »

Your ground enemies seem to do a strange 360 somersault when they appear from the right side of the screen.
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

I am not yet setting their initial look direction when they spawn. Also spawning them in view rather than fully offscreen. I plan to fix in the future.
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

Testing a few midsize enemies. https://youtu.be/Hp-63u9HhOc
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

Image

WIP tutorial screen. Mechanics are tentative.
User avatar
DyingIsFun
Posts: 35
Joined: Mon May 31, 2021 7:14 am
Contact:

Re: Work in progress

Post by DyingIsFun »

Image

Working on two-player support
Post Reply