Bernard Hwang

Level Designer

Design

Dev Blog - AquaBlock - One

Solo Project, DevBlogBernard HwangComment

Overview

What is AquaBlock?

AquaBlock is a mobile puzzle game project. The puzzles contain a fractured block that the user has to piece together.

Everything you see in this post is work in progress.

How to Play

In AquaBlock, the user is given an array of puzzle block pieces that can be combined into a complete block. The user has to place each piece given into the correct positions. The incomplete puzzle block at the bottom can be rotated freely to adjust where the piece drops.

Design

How did this project start?

  1. Concept Stage
    Starting at the concept stage, I created several visual mock-ups for potential games. Translating my ideas into visual representations helped me define the look, gameplay, and scope of the game.
  2. Prototype Stage
    The concepts with more potential were advanced into the rapid prototyping stage. Speed was the focus in this phase; I used placeholder art and scripts to be build quick prototypes that could be used to test out core gameplay.
  3. Minimal Viable Product
    After choosing from the prototypes, a minimal viable product was built. The MVP is a vertical slice containing 3 worlds, 7 puzzles, 3 block types and an unlock system. It's main benefit is that it provides me with a better platform to test and build content with.

Dev Blog - MechDog - Level Generation

DevBlog, Solo ProjectBernard HwangComment

The levels in MechDog are generated using two different generators. 

Everything you see in this post is work in progress.

Generator 1 - Level Segments

Generator 1 builds the exterior parts of the level. These areas consist of open spaces that introduce new obstacles. The idea here is to create spaces for players to freely engage with new content.

The generator uses a series of designed level segments so it requires a good collection of pre-designed level segments to fuel it.

Example of level segments

The generator follows this process:

  1. Choose an obstacle type, starting with easier types first

  2. Generate a level segment that contains the obstacle type

  3. Generate another level segment that uses the same obstacle type, but this time spawn in on top of a platforming segment

As the difficulty increases, this generator starts creating combos of obstacles to increase intensity.

Generator 2 - Trail Run

Generator 2 builds dungeons that utilize the obstacles just used by 'Generator 1'. The player is put to the test by having to deal with the obstacles in a smaller more dangerous space.

The generator follows a series of steps to create a dungeon.

Path Generation

First, it creates a solution that starts from the bottom left and works its way until it hits its right boundary.

Visualized below, the generator starts at the bottom left and then picks from its limited choices which space to move to. The colored blocks represent which directions the path can continue on from that point.

  • Red = Up, Down

  • Green = Up, Down, Right

  • Blue = Right

ROOM GENERATION

The solution path is then replaced with three different types of rooms.

  • Room with exits on the top and bottom

  • Room with exits on the left and right

  • Room with exits on the left, top and bottom

For each room type, there is a collection of room designs that range in difficulty. The generator picks increasingly difficult rooms to vary the dungeon and create a rising challenge. Even with only four different room designs per type, the dungeons that are generated appear unique from each other.

Generator creating multiple dungeons

Generator in-game

Generator in-game

Design

Why Create a Level Generator?

It was a new challenge. Having never created a procedural level generator for a platformer before, I saw this as an opportunity to expand my skills. A level generator also meant that each play experience could potentially feel unique from the last one.

What was learned from making a level generator?

With my approach to level generation, I learned that appearing procedurally generated is very much about hiding the handcrafted portions. I had specific moments that I wanted the player to hit, so I created those moments first and then made sure that the generator had plenty of options to modify the moment.

What Challenges were there in making the generators?

While the advantage of a procedural generator is that it creates something new every time, its proved a challenge to make sure the generator produced a well-paced sequence. My approach to this was to make the generator follow an interest curve. I gave the generator a general guide for when to spawn difficult sections and when to choose easy sections. The hard part of this challenge is that it is difficult to figure out if the approach worked or not.

Dev Blog - MechDog - One

Solo Project, DevBlogBernard Hwang1 Comment

Overview

What is Mechdog?

MechDog is an Endless Runner project that is planned as my first Android release. You take control of MechDog, a dog in mechanical battle suit that races across the desert to escape his pursuers who you have stolen the mech suit from. 

Everything you see in this post is work in progress.

Abilities

MechDog's suit has three abilities:

  1. Jump
    The suit has the ability to launch itself into the air allowing the wearer to leap over hazards without losing speed. The suit can also land on enemies after a jump to destroy them.

  2. Thrust
    When in the air, the suit can use its ion thrusters built into the arms to keep the suit from losing altitude.

  3. Slam
    Also when in the air, the suit can reverse its arm thrusters to thrust itself down to avoid above-ground hazards and damage enemies directly below.

Prototyping Abilities

Design

Why for Mobile?

I wanted to develop an Android release to follow up my internship at Gameloft, a mobile games studio. I had created two experimental mobile games in my senior year at school in which I found tackling touch controls to be an interesting design challenge. Making a mobile game allows me to continue exploring this challenge.

Why an Endless runner?

The Endless Runner genre is a matches well with the constraints of touch controls. With forward movement being automated, the player can focus on executing other actions and abilities. This in theory allows me to design for more exciting moment-to-moment gameplay without worrying about overburdening the player with information.

How did I decide on the abilities?

This project got its start after I read a design article about how add more nuance to jump mechanics. Feeling inspired, I launched unity and messed around with a jump mechanic that had more force the longer your pressed the jump button. This is where the 'Thrust' mechanic evolved from; having more air control tested better within my small test group. Thrusting seemed like a good way to compensate for the lack of lateral control.

The 'Slam' mechanic was initially meant to just be a band-aid solution. After implementing a jump and some test enemies, there were instances where the player missed landing on enemies to take them out. I added a slam instead of tweaking player physics as a quick solution. Again this option appears to work because it gives more control to the player. In addition I assigned the slam to a swipe down gesture to exploit natural mappings with touch controls.

Dev Blog - Mashball

DevBlogBernard HwangComment

Mashball is a multiplayer arena combat game that pits up to four contestants in to a deadly game of hot potato. From it's initial prototype, the game has had a list of feature implemented so far.

While the tech team gets the engine into a workable state, I've been responsible for creating a working version of the game in Unity.

Using Unity to build a precursor version of the game has allowed me to hit the ground running. I've been able to playtest, create levels, and iterate on mechanics far before the team's engine is ready.

As the tech team gets closer to reaching a point where the engine is in a state that allows for geo building and gameplay scripting, I expect to be tackling the difficulties of transferring mechanics from one engine to another.

Here is some footage from our latest playtest session.

Muffin Express Project 5 - Prototype 4

DevelopmentBernard HwangComment

This is a prototype created to help decide the direction for my Junior Team's next project. The only design prompt given by the team was to create a multiplayer arena game.

Mashball is an Arena Combat game. The contestants in th arena must hold onto the bomb as long as they can without having it blow up on them.

Coming out of Engine-proof milestone, this prototype was chosen to be the Team's next project. Over the coming months I will be posting dev blogs charting the iterative changes and progression of the game.