Watch Tower

Watch Tower is a high-stakes timing game where every tap determines your success. You take on the role of Karim, a master infiltrator tasked with hijacking a secure building by unlocking its floors one by one. With limited lives and shrinking targets, the pressure builds the higher you go.

▶ Play Now – It's Free

Learning horizontal stick with vertical movement using Tower Stack

One of the most satisfying things in game development is creating movement that feels smooth and natural. In Tower Stack style games, players usually focus on timing and positioning. But behind the scenes, there is a simple movement system controlling everything.

In this tutorial, you will learn how to create a horizontal stick that moves vertically on the screen. This type of mechanic is very useful in stacking games, timing games, obstacle games, and precision arcade games.

Even though the object is horizontal, it will travel in the vertical direction. This creates an interesting visual effect because the player sees a flat platform or stick sliding upward and downward continuously.

Games like Tower Stack use this kind of movement to create pressure and timing based gameplay. The player waits for the correct moment and taps the screen to stop the movement. If the timing is correct, the stack becomes stable. If the timing is wrong, the game becomes harder.

The good thing about this mechanic is that it is beginner friendly. You do not need advanced mathematics or physics. You only need position updates, movement direction, and screen boundaries.

Understanding the mechanic

Imagine a long rectangle on the screen. The rectangle is horizontal because its width is larger than its height. Instead of moving left and right, it moves upward and downward.

When the stick reaches the top area of the screen, it changes direction and starts moving downward. When it reaches the bottom area, it changes direction again and moves upward.

This creates a loop that never stops unless the player interacts with it.

In Tower Stack games, this movement creates tension. The player watches the movement carefully and tries to stop it at the perfect moment.

Why this movement is important

Vertical movement gives players a feeling of pressure because humans naturally follow movement from top to bottom faster than sideways movement. This makes timing games more exciting.

Another reason is mobile screens. Phones are taller than they are wider. Vertical movement uses screen space better and makes gameplay feel more natural on touch devices.

Tower Stack style mechanics are also lightweight. They work smoothly even on low end phones because only one object is moving.

Creating the horizontal stick

First, we need a game object. The object will represent our horizontal stick.

The width should be large while the height should stay small. This creates the horizontal appearance.

class MovingStick { double x; double y; double width; double height; double speed; bool movingDown; MovingStick({ required this.x, required this.y, required this.width, required this.height, required this.speed, this.movingDown = true, }); }

This class stores everything we need for movement.

The x value controls horizontal position.

The y value controls vertical position.

Width and height define the shape.

Speed controls how fast the stick moves.

The movingDown variable stores the current direction.

Adding vertical movement

Now we need to update the position every frame.

If the stick is moving downward, we increase the y value.

If the stick is moving upward, we decrease the y value.

void update(double dt) { if (movingDown) { y += speed * dt; } else { y -= speed * dt; } }

The dt variable means delta time.

Delta time helps movement stay smooth across different devices.

Without delta time, movement may become faster on powerful phones and slower on weak phones.

Stopping the stick from leaving the screen

Right now the stick will move forever and disappear outside the screen.

We need boundaries.

When the stick touches the top or bottom, it should reverse direction.

void update(double dt, double screenHeight) { if (movingDown) { y += speed * dt; } else { y -= speed * dt; } if (y <= 0) { movingDown = true; } if (y + height >= screenHeight) { movingDown = false; } }

Now the stick bounces between the top and bottom.

This is the core movement system used in many timing games.

Drawing the stick on screen

Movement alone is not enough. We need to render the object visually.

In Flutter with Flame, you can draw rectangles using canvas rendering.

void render(Canvas canvas) { final paint = Paint() ..color = const Color(0xFF00FFAA); canvas.drawRect( Rect.fromLTWH(x, y, width, height), paint, ); }

The stick will now appear as a glowing horizontal rectangle.

Since the width is larger than the height, the object looks like a platform or stick.

Making the movement feel smoother

Beginners usually use very high speeds. This makes the movement feel robotic.

Smooth movement comes from balance.

Try medium speeds first.

For example, a speed between 120 and 250 works nicely for mobile timing games.

final stick = MovingStick( x: 100, y: 50, width: 220, height: 24, speed: 180, );

Another trick is using rounded corners and soft colors. This makes movement appear more polished even when the logic is simple.

Adding tap controls

Tower Stack games become interesting when the player can stop the stick.

When the screen is tapped, movement should freeze.

bool stopped = false; void onTap() { stopped = true; }

Then modify the update function.

void update(double dt, double screenHeight) { if (stopped) { return; } if (movingDown) { y += speed * dt; } else { y -= speed * dt; } if (y <= 0) { movingDown = true; } if (y + height >= screenHeight) { movingDown = false; } }

Now the player can freeze the stick at any moment.

This is the foundation of timing based gameplay.

Creating challenge and difficulty

Easy movement becomes boring quickly. Good games slowly increase pressure.

One simple method is increasing speed over time.

speed += 5;

Another method is shrinking the safe zone where the player needs to stop the stick.

Faster movement plus smaller targets creates tension naturally.

This is exactly why Tower Stack games feel addictive. The player always believes the next attempt will be better.

Using multiple sticks

Once one stick works correctly, you can create many sticks.

Some can move fast.

Some can move slowly.

Some can start from different positions.

This creates more dynamic gameplay.

List<MovingStick> sticks = []; sticks.add( MovingStick( x: 60, y: 20, width: 200, height: 20, speed: 140, ), ); sticks.add( MovingStick( x: 100, y: 120, width: 180, height: 20, speed: 220, ), );

Each stick now moves independently.

Common beginner mistakes

One common mistake is forgetting boundary checks. Without them, the object disappears outside the screen.

Another mistake is using huge speeds. Players need readable movement. If movement becomes too fast, the game feels unfair.

Some beginners also forget delta time. This creates inconsistent movement across devices.

Another issue is object size. If the stick height becomes too large, it no longer feels horizontal.

Improving visual feedback

Great movement is not only about logic. Visual feedback matters too.

Add glow effects when the player taps.

Add screen shake when the player misses.

Add particles when the stick stops perfectly.

These small effects make simple mechanics feel premium.

Adding score system

Timing games become more engaging with scores.

The faster the player reacts, the higher the score.

int score = 0; void increaseScore() { score += 10; }

You can also give bonus points for perfect timing.

This encourages players to improve their precision.

Why simple mechanics work

Many successful mobile games use extremely simple systems.

A moving stick may sound basic, but when combined with timing, speed, score, and pressure, it becomes exciting.

Simple mechanics are easier to understand. Players can start instantly without tutorials.

This is why casual arcade games perform well on mobile devices.

Final thoughts

You now understand how to create a horizontal stick with vertical movement using Dart and Flutter game logic.

This mechanic is one of the easiest ways to build timing based gameplay. Even though the code is simple, the result feels satisfying and responsive.

Once you master this system, you can expand it into full games with towers, obstacles, moving platforms, combo systems, and score multipliers.

The best part is that this mechanic works perfectly for mobile browsers and lightweight web games. It performs smoothly and feels natural for touch controls.

Keep experimenting with movement speed, stick size, and player timing. Small adjustments can completely change how the game feels.

Most great arcade games start with one small mechanic. This horizontal stick movement system can easily become the foundation of your next addictive game.

About the game:

What is Watch Tower and why is it so addictive?

At its core, Watch Tower is about precision. You are looking at a vertical tower with seven distinct floors that need to be breached. To unlock a floor, you have to stop a moving slider at the perfect moment.

The catch? As you climb higher, the floors get thinner. This means your window for error becomes smaller and smaller. It starts off as a simple test of rhythm, but quickly turns into a nerve-wracking challenge where a single millisecond determines if you move up or lose a life.

Since the game is built using modern web standards, it runs smoothly on almost any device. This is largely thanks to Wasm (WebAssembly), which allows the game to run at near-native speeds directly in your browser without lag, ensuring your taps are registered instantly.

How the gameplay works and how to reach the top floor

The rules are easy to learn, but the execution requires a steady hand and sharp eyes. Follow these steps to master the climb:

  1. The game begins at the base of a 7-story building.
  2. A slider moves vertically across the floor indicator.
  3. Tap the screen to stop the slider. If it lands within the floor's boundaries, that floor is unlocked.
  4. Successfully unlocking a floor moves you up to the next, more difficult level.
  5. Each floor is shorter than the one below it, making the target harder to hit as you progress.
  6. You start with 5 lives. If you miss a floor, you lose a life to try re-unlocking it.
  7. The faster you unlock all 7 floors, the higher your final score will be.

What is on the screen

  1. Moving slider The slider moves up and down on the screen continuously. You need to watch its movement carefully before tapping. Timing your tap at the right moment is the main focus here.
  2. Tower floors The tower is divided into multiple floors stacked one above another. Each floor becomes smaller as you go higher. This makes it harder to land the slider correctly on upper levels.
  3. Lives display You have a limited number of lives shown on the screen. Each wrong tap will reduce one life. When all lives are gone the game ends.
  4. Progress and score Your progress shows how high you have climbed in the tower. Faster and accurate taps increase your score. Reaching higher floors gives a better final result.

The Story: Karim’s Big Hijack

Karim is not your average thief; he is a specialist in "uninvited entries." The city’s most secure Watch Tower holds data that could change everything, and Karim has been hired to get it.

The building is protected by a sophisticated kinetic locking system. Instead of keycards or fingerprints, the security relies on timed shifts that only a human with perfect reflexes can bypass.

As Karim, you are standing at the foot of this architectural giant. The guards are patrolling, the cameras are swiveling, and your only way in is through the manual overrides on each floor. One mistake triggers the alarm; five mistakes and the mission is a total failure. Reach the roof, and the prize is yours.

Key features of the Watch Tower experience

🏢

Seven levels of difficulty

Each of the 7 floors offers a unique challenge. The shrinking height of the targets ensures that the gameplay never feels repetitive.

⏱️

Time-based scoring

The game rewards speed. While being careful is important, the real experts move quickly to secure a spot at the top of the leaderboard.

🚀

Optimized with Wasm

By utilizing WebAssembly (Wasm) instead of older web renderers, the game stays responsive even on lower-end phones, providing a fair experience for everyone.

❤️

Life management system

With 5 lives in your pocket, you have a small buffer for errors. Use them wisely, as the upper floors are much less forgiving than the lower ones.

📱

Mobile-first design

The vertical slider and tap-to-play mechanics are designed specifically for one-handed play on mobile devices.

🆓

Free and instant access

No downloads or sign-ups required. Just open your browser and start your hijack mission immediately.

Pro tricks to help you survive the climb

  1. Start from above: Try to track the slider as it moves from the top down. It often helps your brain predict the stop point better.
  2. Find your rhythm: The slider moves at a consistent speed; try to tap to a silent beat in your head.
  3. Don't panic on thin floors: When the floors get small, take an extra second to observe the slider's loop before committing to a tap.
  4. Speed matters: If you are confident, tap early. The less time you spend on a floor, the bigger the score multiplier.
  5. Watch the bounce: Pay attention to how the slider reacts at the edges of its track to time your movement perfectly.

Frequently Asked Questions

Why does the game feel so smooth on my browser?

The game uses Wasm (WebAssembly). This is a modern way to run code that makes web games perform almost as well as apps installed directly on your computer or phone.

Can I recover lives during a game?

No, you start with 5 lives, and once they are gone, the mission fails. You'll need to restart from the first floor.

Does the slider speed up as I go higher?

While the slider speed stays mostly consistent, the floors become much shorter, which makes it feel like the game is moving faster and getting tougher.

Is there a way to save my progress?

Watch Tower is designed as a quick arcade challenge. Each session is a fresh attempt to reach the top in the fastest time possible.

Is Watch Tower free to play?

Yes! You can play the full 7-floor experience for free directly in your web browser.