game-dev

Prepare to finish Umbraseal

After Steam Early Access and few times of update. We find special bullet is not as fun as we expected. On the other hand, we also realize our budget cannot afford scenario material of story. Current material already consume our last budget, but the quality still under excepted. So instead of presenting roughly made story, we decide to reorder game flow for change the game style.

We want to adjust difficulty and game flow. We tend to make Umbraseal more friendly for beginner. So we divide difficulty to four level. The enemy in easier difficulty will shoot less bullets or be spawned in smaller group. In addition, we may replace level selection by more linear game flow to decrease play time in each stage.

Although many features are changed after Early Access announcement, we still want to finish this project and bring playable feature as more as possible.

\\\\٩( ‘ω’ )و ////

繼續閱讀 “Prepare to finish Umbraseal"

game-dev

Revisit Danmaku made by Haxe

Almost one year ago. I decide to implement a Danmaku System which follows Touhou Danmakufu(th_dnh for short)’s API and make many bullet patterns for our Early Access game 《Umbraseal》. Now th_dnh becomes open source software, I want to learn the design decision from original version for improving our work.

Before we diving this topic, I have to declare that I don’t mean to judge th_dnh’s design. Like we discussed in previous article, this software creates the most bullet pattern in the world and has a great creator community. We just want to learn some idea from it’s source code.

Choose an API set to study

After counting API usage from popular script of BulletForge, I found our game only need the following APIs :

Furthermore, only Shot Functions and Move Object Functions use multiple class. So these functions will be our study target.

Shot creation and moving pattern

At first, I thought the CreateShotX1 functions are just wrapping CreateShotX2 by transforming speed/angle to x/y-axis speed. But they actually have different behavior when setting max speed property. So th_dnh uses StgMovePattern class to present different moving strategy, including moving character.

The pattern class is clever, but th_dnh also makes StgMove class scheduling patterns. This structure make ObjMove_AddPatternXX function faster than user script. However, our system don’t use script. So adding pattern by task wont hurt performance, but reducing StgMove class’s responsibility. The ShotMoveSystem should be replaced by pattern class.

Delay and delete in shot’s lifetime

th_dnh uses delay and delete parameters to control the moving timing of shots. Moreover, these two parameters also affect fade-in/out effect, collision activity, auto deleting, laser width, … and so on. By diving into code, I found some ugly code like :

_Move();

_DeleteInAutoClip();
_DeleteInLife();
_DeleteInFadeDelete();
_DeleteInAutoDeleteFrame();

are actually filled with the knowledge about making playable bullet pattern. However these knowledge about timing and visibility are hidden by comprehensive class’s method.

In our ECS system, delete parameter was simply implement by existed Lifetime component. After knowing these knowledge, I decide shot delay and delete should deserve their own system. In addition, separating different concepts to systems can prevent ugly codes.

Pivot of shot and laser

Originally, I thought shot has a center pivot circular hitbox. The straight laser has a mid-bottom pivot rectangular hitbox. And the loose laser is a special straight laser that will changing it’s length from bottom to top. However, this design is very inconvenient for rotating bullet pattern.

Now I think th_dnh is right. The loose laser should have a center pivot hitbox like shot. But it has rectangular hitbox with changing length from top to bottom. That will make bullet pattern design become easier.

Wrap up

We are still building our game and adding more bullet pattern for Boss battle. Have a defined behavior can follow is very helpful. I guess these ideas are useful enough for now. Until we decide to add curve laser or something, we can focus on bullet pattern design and ECS’s own problem. BTW, we are almost finish two new Boss stage. The story mode will coming soon.

 

NOTE – Itch.io page is closed. Free play demo and community will move to Steam.

繼續閱讀 “Revisit Danmaku made by Haxe"

game-dev

Prepare for Early Access

This month we decide to add shadow ability, new level theme and traps. BTW, Umbraseal becomes pre-beta on itch.io .

To meet game title, our heroine now has shadow ability. Shadow ability contains two phase:

  1. Right click to release Umbra :
    • Umbra is a shadow entity that attack with player
    • Each hit from Umbra increases shadow charge
  2. Right click again to release Penumbra:
    • Penumbra is a shadow entity that release shadow power.
    • The effect of shadow power is decided by current shadow charge :
      • 0 – No effect
      • 1~2 – Umbra and Penumbra shot the nearest enemy
      • 3~5 – Create shadow area that keep damage enemy and reduce player mana cost
      • 6 – Create shadow area that hugely damage enemy and exempt player mana cost

1.PNG

The new level theme is Mine. To adapt more and more area theme setting, we rewrite asset and theme setting system and import lots of outsource asset as breakable props in stage. The new system allow us to reuse theme setting and place traps in areas. The traps contains three types:

  • Floor Spike – triggered or periodic active
  • Auto-Shot Fort – on floor or wall
  • Sawblades – on floor or wall

When player is dealing with enemy, those traps can create more dynamic situation. This mechanic forces player to make decision more frequently and quickly which enhances gameplay.

擷取.PNG

After delivering pre-beta version of Umbraseal on itch.io, we receive lots of feedback. Most complaints are about tutorial and visual effect. We think it is a sign about “Current gameplay is ok, but need more polishing". And Yes, we will keep working on it. Meanwhile, we are preparing for Steam Early Access! There are so many things have to be done, first two level content, press release, game trailer…etc . Hope we can meet customers on Steam before August.

\\\\٩( ‘ω’ )و ////

NOTE – Itch.io page will be closed. Free play demo and community will move to Steam.

繼續閱讀 “Prepare for Early Access"

game-dev

Custom bullet mechanic

This month we added custom bullet and boss stage seal mechanic.

main-ui.PNG

By default, player has 3-way shot pattern with round bullet. Now you can change what you shot by looting different shape and property of bullet from enemies. We are still trying other bullet pattern shape and bullet property. Although shooting lots of random things is very fun, but the goal is to make bullet pattern become crazy. 😛

battle.PNG

For connecting middle stage and boss stage, we introduce seal mechanic. Player unlock seal by defeating enemies, and allowed to pass boss stage portal when multiple seal unlocked. This process creates short term goal (unlock seal) and long term reward (defeat boss). Now we should focus on various middle stage environment and awesome boss fight.

1556859087975.jpg1557459693024.jpgWebpp.net-gifmaker.gifWebp.nnet-gifmaker.gif

After delivering pre-alpha version of Umbraseal on itch.io, we receive lots of feedback. The major complaints are about UI material and repeated middle stage environment. However, the outsourced assets are almost done. Hope we can apply new artwork for completing early access version as soon as possible.

( ~’ω’)~

繼續閱讀 “Custom bullet mechanic"

game-dev

Free to play demo and outsourcing

This month we were trying to deliver first playable demo for players. There are many trivial works like adjusting visual effect, user interface, config option, gameplay element. Because we want to get more feedback in early stage, now you can download pre-alpha version of Umbraseal on itch.io for free. The gameplay cycle may seems a little bit rough, but we will polish it as soon as possible. Your comment would be super helpful to complete this game, please play Umbraseal and tell us what you think.

ezgif.com-video-to-gif.gif
light map up!

To polishing this game, we started to outsource art works like tile map and some enemy animations. Although communication takes a lot of time, the process still faster than we expected. It seems like we can make most of polish work done in the next month.

( ~’ω’)~

繼續閱讀 “Free to play demo and outsourcing"

game-dev

Enemy behavior and bullet pattern

This month focus on adjusting enemy behavior and bullet pattern for gameplay.

For enemy behavior, we need they perform flexible movement and attack. So an enemy will chase player to the death, yet keep distance with other characters. Once in right position, enemy will start to surround player like a satellite. Also, enemy will attack constantly. Combine those movement could create a flow. Float like a butterfly, sting like a bee.

ezgif.com-video-to-gif.gif

For bullet pattern, we adjust fire speed and cooldown time per shot. Moreover, we make bullet to predict player’s position so that it can intercept player. :3

We have more confident to find artist for coworking, because most gameplay element is done. We shall make material and art task list for next phase.

(・`ω´・)

繼續閱讀 “Enemy behavior and bullet pattern"