After Umbraseal finished

We recently finished《Umbraseal》game flow update. Although we cannot keep adding new features, because of budget issue. We found this game has marketing and planing issue rather than development issue. According to player feedback, 《Umbraseal》is playable but missing some feedback. More importantly, we don’t know how to show what unique experience this game provided to player.

However, we still gain a lots of feedback and experience from making this game. And we have ability to ship a game from design to operation. We now plan to learn more game planing staff in recent future. Hope we can bring these experience to new game. Thanks for everyone support《Umbraseal》.

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


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"


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 :



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 – page is closed. Free play demo and community will move to Steam.

繼續閱讀 “Revisit Danmaku made by Haxe"


Prepare for Early Access

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

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


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.


After delivering pre-beta version of Umbraseal on, 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 – page will be closed. Free play demo and community will move to Steam.

繼續閱讀 “Prepare for Early Access"


Custom bullet mechanic

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


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. 😛


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.

After delivering pre-alpha version of Umbraseal on, 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"


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 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.
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"


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.

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"


A little more action, please

To solve the “game is too easy" issue from players’ feedback, we make all character can do more action.

In Shoot ’em up, player can focus on dodging without distraction because bullets usually come from single direction. However, bullets come from any angle in Umbraseal. In that case, player become helpless when facing bullets unless we reduce bullet number (like we did). So that is why players consider this game is to easy. New solution is to provide a “Dash" ability to let player survive from surrounding attack, yet keep bullet numerous.


On the other side, enemies only had simple behavior like approaching player then attack. It help player to predict their movement, but make enemy least interested. To deal with this issue, we make enemy behavior more action game like. Now, they need to avoid each other to catch player and have poise value, pre-attack animation, stun, etc. These behaviors allow enemy interact with player’s action.
action without animation, need artist help 😛

In this month, we were trying to enhance core gameplay and control. Meanwhile, we finally find screenwriter and composer guy. ヽ(∀゚ )人(゚∀゚)人( ゚∀)人(∀゚ )人(゚∀゚)人( ゚∀)ノ. It sounds a bit odd, but our game development still do not have artist yet. Need to work it out. _(┐「ε:)_

繼續閱讀 “A little more action, please"


The TDD, the BDD and the requirements

In previous article, we decide to change many system for enhancing game experience. Unfortunately, AI behavior and skill are typical complex system that need access information from environment and change some status. It is hard to prevent bug when changing a system which heavily depend on the interactions with other systems. Turns out, we need testing.


Because there are so many system and functionality, it is important to separate irrelevant codes and what we want to modify. To regularize exist systems, 3 kinds of testing are introduced:

  1. Unit Test – make sure fundamental components won’t be broken accidentally. We use haxe-utest to test Logger, Collision and other stable systems.
  2. Behavior Test – to ensure third-party library and system interactions work as expected. buddy is chosen to test DatabaseTiled Loading, Path Finding and Behavior Tree modules and AI behavior.
  3. UI Test – use automation test to replace manual test for basic operation. We integrate Unity UI Test Automation into our game to simulate boring operation like toggle widget and drag/drop item.
UI Test, easy to find bug (´゚д゚`)

To be honest, it is technically not formal TDD and BDD. However, testings are really help our development process. As game features change, testings got our back. Do you think test driven is suitable for game development? Would you consider using TDD in your game? Please leave your comment and share your ideas. (<ゝω・) ☆