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

Login with username, password and session length

 
Advanced search

1408582 Posts in 68946 Topics- by 62845 Members - Latest Member: KahrabaaX

September 22, 2023, 03:17:58 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsAutopanic
Pages: 1 [2]
Print
Author Topic: Autopanic  (Read 4149 times)
dklassic
Level 0
**


View Profile
« Reply #20 on: July 09, 2023, 06:18:45 AM »

Time for yet another quick update on the project.

I’m still trying to figure out how to properly redesign the combat, this part will mostly come down to how fast I can find inspiration for designing meaningfully varied weaponry. In the meantime I decided to mess with more minor stuffs.

Rim indication Effect


I’ve alway been wanting to do something like this, a gentle indication to show justification for not being able to fall off the platform. Similar stuffs have been attempted before but the visual never feels proper enough, but this time is different, because I've finally obtain the power of shader.


This time around I simply added a quad to all the rim. I have a LevelManager that updates player location and feeds into global shader keyword each frame, then to read it out in the shader and update the alpha of quads accordingly. Other than that, I use the combination of world space XZ and UV's V to read from a 3D Voronoi Noise to ensure the continuity between quads without the need to actually build a full continuous rim quad.

Why the combination of world space XZ and UV's V instead of just world space XYZ though? It's because I wanted to do the usual fake reflection. With world space XYZ, there will be a problem that I cannot automatically know how to calculate the opposite of y difference, so simply use UV's V then to flip the underlying quads would be much easier.


Shadow Casting Light

Not much going here, basically enable shadow casting and setup some mesh renderers to only cast shadows.


But I ran into some weird behavior with the spot light. My game is physically huge, and the gameplay space will extends to around 40,000 in y axis, which causes spot light shadows to flicker in and out of existence when the height is too high. This is most certainly an issue of precision, but I have zero idea as to why spot light behave differently to point light (which doesn't have this problem).

So anyways I decided to just change all spot lights to point lights since it still look appropriate and call it a day.

Damage Number


This one is a bit controversial imo, but I think implementing damage number display is still for the better.

My original justification for not implementing it is because I feel like the damage numbers will be break my minimalist visual. But after attempting to implement it, I feel like the existence of damage number does indeed make determining combat effectiveness much easier. So I guess it's here to stay but with option to turn it off.

Audio Caption


This one is perhaps a happy accident.

I had this setup to help me debug my sfx trigger, but I just realized that, since the rise of accessibility, audio caption seems to be one of the most requested accessibility feature. So I figure that, albeit a bit messy, this is probably serviceable enough for a accessibility feature for those who need it.

I did some extra processing to make sure the effect don't just become a visual mess:
  • Sound effects are renamed to make more sense.
  • Sound effects are assigned with an importance value, so that less important sfx will have lower opacity.

And, that's it.
« Last Edit: July 10, 2023, 06:53:06 AM by dklassic » Logged

circusCharlie
Level 0
**


View Profile
« Reply #21 on: July 10, 2023, 06:51:22 AM »

Great progress. Keep going. All the best!
Logged
dklassic
Level 0
**


View Profile
« Reply #22 on: August 03, 2023, 07:04:07 PM »

Update - August 11th, 2023 - Demo end

Gathered quite a lot of feedback during the event. Thanks all of you who've played!

Demo available now!

My game Autopanic's demo is now available as part of Tiny Teams 2023 (8/3~8/10 BST)!


There are certainly still mechanics missing, but the public demo will feature around 50% of content and 80% of the mechanics. So if possible, please check it out and share your thoughts with me!

Thanks in advance!





Miscellaneous:

So, this demo release without much announcement or marketing is an accident in itself. To put it bluntly, I never thought I'd be featured in Tiny Teams to the point that I even forgot the fact that I registered.

And here we are.

So anyways, since I haven't got time to revisit the marketing materials yet, I figure the least I can do is to put out a demo of sorts. And I've been busy fixing some of the major bugs and mechanic changes for the past few weeks, and well, here's the demo.

Also, this demo is sorta The Whole Game, by which I mean it is technically possible to reach the end of the game. Will anyone been able to reach the end? Or will no one play the demo at all? We'll see, we'll see.
« Last Edit: August 10, 2023, 09:56:10 PM by dklassic » Logged

fizzd
Level 0
**


View Profile
« Reply #23 on: August 04, 2023, 12:45:08 AM »

Great devlog, and had a lot of fun with the demo! I didn't feel like its too simple, actually quite a lot already to keep track of with reloading and dashing and different enemies and bombs. I actually felt it to be more engaging compared to Hades.

I recorded a playthrough here in case its useful:




The thing that made me most confused was the upgrade system with the modes, bash mode deflect mode etc.

At first I thought that these are the same thing as the different weapons. Like different weapon = different mode. So when i choose to upgrade 'deflect mode' i thought it means that theres one mode if i'm in it will deflect bullets. So I keep checking controls to see if i missed a key to switch modes? Or maybe the shotgun weapon type is actually called 'bash mode', and I can bash when i equipped that weapon?

But actually these are not modes the way I understood it (exclusively different modes that dont work all the time), but more like modules.

I died at the basher boss twice, it felt quite unforgiving. And a bit annoying for me that it relies on watching the meter for the enemy too much on when its going to dash at me. (instead of an audio feedback or a consistent timing that makes it easier to learn)

But the dialogue after losing made me laugh haha, its nice for my character to acknowledge that its difficult. I'm definitely going to play more to try to beat this.

(Also i was surprised that for such quality you are planning to release this for free, it looks so cool and polished it feels like it can sell easily for a cheap price (I dont know how much content there is but even what I played I already would have paid $2+ and not feel cheated))
Logged
dklassic
Level 0
**


View Profile
« Reply #24 on: August 04, 2023, 01:03:06 AM »

Great devlog, and had a lot of fun with the demo! I didn't feel like its too simple, actually quite a lot already to keep track of with reloading and dashing and different enemies and bombs. I actually felt it to be more engaging compared to Hades.

I recorded a playthrough here in case its useful:




The thing that made me most confused was the upgrade system with the modes, bash mode deflect mode etc.

At first I thought that these are the same thing as the different weapons. Like different weapon = different mode. So when i choose to upgrade 'deflect mode' i thought it means that theres one mode if i'm in it will deflect bullets. So I keep checking controls to see if i missed a key to switch modes? Or maybe the shotgun weapon type is actually called 'bash mode', and I can bash when i equipped that weapon?

But actually these are not modes the way I understood it (exclusively different modes that dont work all the time), but more like modules.

I died at the basher boss twice, it felt quite unforgiving. And a bit annoying for me that it relies on watching the meter for the enemy too much on when its going to dash at me. (instead of an audio feedback or a consistent timing that makes it easier to learn)

But the dialogue after losing made me laugh haha, its nice for my character to acknowledge that its difficult. I'm definitely going to play more to try to beat this.

(Also i was surprised that for such quality you are planning to release this for free, it looks so cool and polished it feels like it can sell easily for a cheap price (I dont know how much content there is but even what I played I already would have paid $2+ and not feel cheated))

Real glad for playing the demo, and especially thanks for recording your playthrough! It's always refreshing to see other people playing my game which help me identify my problems a lot easier than me playing multiple times ('cause I have built-in knowledge on how to play optimally).

So the confusion of modes, the general idea is as you said, same thing but different mode. In the case of "Deflect Mode", it is actually a mode of Dash, which let you deflect projectile with the dash. It's probably my super lame UI that didn't convey the idea good enough, and I'll be seeking means to improve it.

As for the free part, as you probably noticed by now, the game features some extremely weird design choices, such as:

  • No button displayed during control tutorial
  • Zero button prompt
  • Heavy focus on in-universe explanation for everything

I'm trying to make the game fully diegetic, in hope to make something truly unique, which does not always result in the best experience for the player. So I figure removing price tag would be the best way to lower the barrier to enjoy my design.

Plus as a random first time developer, also an Asian on that note, it's hard to break into mainstream market. I hope that by releasing my first game for free would profit me more overall in the end.

Thanks again for playing the demo!
« Last Edit: August 04, 2023, 01:16:37 AM by dklassic » Logged

fizzd
Level 0
**


View Profile
« Reply #25 on: August 04, 2023, 03:44:22 AM »

That's really cool, you clearly have thought and decided on these principles! Just to share: from my perspective I dont actually feel much difference between the dialogue of 'maybe check your settings' (i think that was the line in the game) and having the button tooltip visible while playing, they both refer to something outside the game already, to me.

I had a similar type of principle in our game Rhythm Doctor, at first I really wanted it to be immersive (as if you are really helping a hospital somewhere else in the world). So i wanted a real-time clock, and the time of day in the game will match the players own time of day. And the story would never jump forward in time.

But later, we got looser on those principles because the day/night shift concept was too intuitive as a way to to show easy/hard levels. In the end it didn't really matter that much to the story, because players could suspend their belief for these little things easily.

Anyhow, just a random story haha, it's an interesting to see you stick to the principles as hard as you can and make it free instead. Best of luck with the release, I'll be waiting to play!
Logged
dklassic
Level 0
**


View Profile
« Reply #26 on: August 04, 2023, 03:51:10 AM »

That's really cool, you clearly have thought and decided on these principles! Just to share: from my perspective I dont actually feel much difference between the dialogue of 'maybe check your settings' (i think that was the line in the game) and having the button tooltip visible while playing, they both refer to something outside the game already, to me.

I had a similar type of principle in our game Rhythm Doctor, at first I really wanted it to be immersive (as if you are really helping a hospital somewhere else in the world). So i wanted a real-time clock, and the time of day in the game will match the players own time of day. And the story would never jump forward in time.

But later, we got looser on those principles because the day/night shift concept was too intuitive as a way to to show easy/hard levels. In the end it didn't really matter that much to the story, because players could suspend their belief for these little things easily.

Anyhow, just a random story haha, it's an interesting to see you stick to the principles as hard as you can and make it free instead. Best of luck with the release, I'll be waiting to play!

Nice share! I'm actually bending quite a lot of rules by now, i.e. auto dialogue progressing used to be on by default 'cause fully diegetic (TM), but I made the last minute decision to default it to off for the demo.

I will probably continue to do so whenever a design crossed the line of "weird but interesting" to being pure frustration from players' perspective haha. I do ultimately want to make an enjoyable game!

Again, thanks for this story, it is totally relevant!
Logged

dklassic
Level 0
**


View Profile
« Reply #27 on: September 11, 2023, 05:52:30 AM »

Delayed Result Gathering

So there's this technique called Delayed Result Gathering where you can delay the gathering of Jobs' result, to prevent stalling the main thread in waiting.

In normal method, a Job related loop would look like this:

Code:
Loop()
{
    DispatchJob();
    GatherResult();
    DoOtherStuffs();
}

Right? But then this whole sequence is executed within a frame, which means GatherResult had to stall everything else and wait for the Job to finish first. Which means the whole process essentially looked more akin to this:

Code:
Loop()
{
    DispatchJob();
    // Wait until Job done
    GatherResult();
    DoOtherStuffs();
}

With Delayed Result Gathering, we essentially collect the result at the start of next frame, as in:

Code:
Loop()
{
    // Hopefully the Job is done
    GatherResult();
    DispatchJob();
    // No need to wait for Job done
    DoOtherStuffs();
}

With a single frame of delay, the Job can be done asynchronously, ideally. One can even push it further, to collect the result only when the Job is fully complete, resulting in zero waiting:

Code:
Loop()
{
    if(jobDone) // Wait for the Job completely asynchronously
        GatherResult();
    if(!jobDispatched)
        DispatchJob();
    // No need to wait for Job done
    DoOtherStuffs()
}
Though for some reason, back when I tried to implement it when I'm researching how to write a scalable AI, Unity gave me some error preventing me to do so. I figure the performance improvement is already good enough, so I just leave it as is.

Recently I read an example on how to generate combined mesh asynchronously using Jobs. And I realized that there's a much intuitive way of implementing Delayed Result Gathering, which allows me to write it in the much intuitive DispatchJob -> GatherResult order.

So I've done it using Coroutine:

Code:
Coroutine()
{
    JobHandle handle = DispatchJob();
    while(!handle.IsComplete)
        yield return null;
    handle.Complete();
    GatherResult();
}

And so now the EnemyManager can update 100 enemies easily without getting stalled by the Job.



Before, the EnemyManager stalls to wait for the Job done.



After, the EnemyManager simply continue whatever it needs to do and wait for the result asynchronously.



After, when the result is ready to be gathered, proceed with the processing.
« Last Edit: September 12, 2023, 12:18:35 AM by dklassic » Logged

dklassic
Level 0
**


View Profile
« Reply #28 on: September 18, 2023, 06:39:42 AM »

New demo coming soon, participating in Game Devs of Color Expo and SHMUP Fest, and development postponed indefinitely

Phew, quite a mouthful title, eh?

So for the demo, which is largely the same as the last one but with QoL updates and bugfixes, will be permanently available soon. I will be participating in two Steam event: Game Devs of Color Expo (Sep. 20th - 30th) and SHMUP Fest (Sep. 25th - Oct. 2nd) to test another weird idea I had for a while, let's hope it works.

Also Autopanic and Autopanic Zero's development will be postponed indefinitely, let's talk about that, long story ahead but the TL;DR is:

I'm still fixated to release Autopanic some day, but I will stop targeting random meaningless date before the game is fully finished.

Now if you're interested in what happened, here's the full story.

The making of Autopanic


This is going to sound super weird, but I'm actually perfectly fine for not releasing Autopanic.

I set out to make Autopanic in May 2020 as sort of a way to cope with the most difficult period in my life. To me, it is more of a research project to see whether or not I can:

  • learn to make a game from scratch with zero knowledge
  • actually build my weird idea into a enjoyable product

It has since been proven by playtesters months ago that albeit flawed, what I set out to do with this project is achieved.

With that, comes a difficult problem to actually releasing it.

To release Autopanic

To release Autopanic, multitude of extra works are still required:

  • Some design flaws had to be fixed
  • All potential bugs had to be fixed to prevent immersion breaking
  • More artworks had to be added, and the existing one has to be retouched to be commercially viable (as in I won't cringe when I make a trailer with it)
  • The music had to be improved, somehow
  • The writing had to go through extra passes to be actually enjoyable

Which is a ton of work for a fully solo project, though I'm really fixated to release it within 2023, so I can finally move on.

This is when the cracks started to show.

Stress beyond control

I showed symptom of physical urticaria since March 2023, which is a physical condition normally associated with stress. I considered myself to be fairly well trained in this department, which has proven to be the case for how I survived the ordeal. But at long last, the symptom proved that I'm already overloaded, and I know I had to race to the end before I'm consumed.

My condition got worse as my attempt at securing government funding was deemed unworthy. To be fair, Autopanic can be finished regardless of funding, but the whole process costs me time and a small sum of money which is really frustrating.

Then Tiny Teams happened. Which is normally a good thing, and I'm really felt privileged to be invited. But I never thought I'd be accepted and haven't had enough time to prepare for better promotion materials. And since Tiny Teams is such a big opportunity, I feel obligated to release a demo at the very least. Which in the end gathered me so many more followings, wishlists, and more importantly more feedbacks, and I'm really glad that I did release this demo.

Though as glad as I am, my stress related symptom only increases as time goes on. Which forced me to reevaluate what I really want with this project, which I don't really have.

To delay indefinitely

I don't really care if the game actually releases or not, I've already reached my goal. Which is why Autopanic is set to be released for free all this time, I mean I do intend to have a supporter's pack DLC of sorts for those who really wanted to show support, but I don't really intend to make a living with my game.

I cannot pretend that I really care about something I don't, and it is exactly that which leads to my stress.

With that settled finally, I'm ready to announce the indefinite delay of Autopanic's development, and start treating myself better by playing all the games I arbitrary prevents myself from playing until I finished Autopanic: Final Fantasy 14 6.0 expansion, Tears of the Kingdom, Inscryption, Disco Elysium, Hitman 3, Balder's Gate 3. Also Cyberpunk 2077 when they released the expansion and had the game all patched up.

I haven't felt so excited for a while, I have so many games in my backlog, and it'll take me months to finish them all. Apparently just the thought of this had my physical urticaria cured and I cannot take an example picture for this post.

So the date I decided to delay is September 12th, which is days before

Unity happened

Autopanic was made with Unity Engine.

I don't have many grudge with Unity. Sure, I haven't seen a single quality of life improvement during my three years of development, most new features meaningless to Autopanic. But beyond frustrations here and there, I can always bypass Unity itself and write my own solution that fits my need perfectly and the engine won't fight back that hard.

ECS is broken for years but Autopanic doesn't really need it (Autopanic Zero on the other hand, well), HDRP/URP is feature incomplete but I just revert back to Built-in RP when I figured out URP is a mess. But then IronSource merger, the promotion of meaningless AI tools, and having Gigaya team fired bring more questions than answer as to what Unity wants to be as a company.

Then comes the pricing change and per install fee. I don't really have issue with loyalties as I don't even know how well Autopanic will fare on Steam, but if I somehow managed, my plan with Autopanic to be released for free with supporter's pack is the exact pricing scheme that suffers the most with low income per sale.

And with more major issues detailed by Rami Ismail, I feel like the trust with Unity has broken so badly that I'm incentivized to explore alternative options.

What now?

What better way of taking a vacation from game development, than to make more games!

So I'll be checking out both Bevy and Godot and release a game with each to see how the workflow fares. Autopanic mostly consists of my custom solution with little dependency to Unity itself, so if any of these is good enough, I'll be interested in doing a full port of Autopanic and leave Unity behind.

Sure, console porting will be a problem in the future, but Autopanic will have to be successful enough on Steam alone to deemed worthy of a console port anyways. And if it is really financially successful somehow, I could always hire a porting studio for that.

Of course, if the workflow is not good enough, I'll probably continue to develop and release Autopanic with Unity. But even if that's the case, I'm fairly sure Autopanic will be my first and the last game using Unity.



That's it!

Thank you for reading this lengthy post, and hope you have a nice day!
Logged

Pages: 1 [2]
Print
Jump to:  

Theme orange-lt created by panic