I was expecting the first couple of weeks to be mostly groundwork – figuring out Unity, fiddling with build settings and fighting the usual Android deployment quirks. And yes, there was some of that. But it all went smoother than I expected. Way smoother.

Now, by the end of week two, I already have a fully working local version of Connect 3D running on Android:

  • Full 3D rendering of the wooden board and player rings, with basic textures.
  • Light sources and the ability to rotate and zoom the board.
  • You can graphically select a pin to place your move.
  • Two-player mode on the same device.
  • Core game logic implemented: turn-taking, move validation, win/draw detection.
  • A simple UI to start a new game, highlight the last move, and show the winning sequence.

It’s pretty cool that you can play full games already and it doesn’t look too bad for a first prototype.

Screenshot: The prototype running on a physical Android device.

How It’s Built

Right now, everything is local – no backend, no database, no networking – just a clean, focused game implementation that prioritizes functionality. There are no user accounts or menus yet – just a single button to start the game and two hardcoded players taking turns.

At a high level, the architecture looks like this:

  • Game state is managed entirely in Unity, with clearly separated responsibilities: One component handles the board logic, another the turn system and a third the UI.
  • Data persistence uses simple local JSON files – quick to work with, easy to test and easy to replace later.
  • Separation of concerns has been a core principle from the start. Input handling, UI and game logic and UI are all modular, so adding network later should be much easier.

All 3D graphics are created directly in Unity using primitive shapes and placeholder textures.

Screenshot: The Connect 3D board inside the unity editor.

This setup is lightweight, testable and flexible – a sandbox I can build on as the project grows.

Current Limitations

Here’s what’s not in place yet:

  • No networking.
  • No user accounts or real player management.
  • No persistent storage beyond local JSON.
  • No animations, sounds or visual polish.
  • No iOS support (yet!).

But the core gameplay is there – and it’s surprisingly fun. I’ve caught myself playing more rounds than necessary for testing. Always a good sign. 😄

Change of Plans: Let’s Polish Early

Originally, I planned to jump straight into server development after this sprint. But since things went faster than expected, I’ve decided to dedicate the next two weeks to improving the local experience.

Here’s what I’m aiming to do:

  • Make the UI cleaner and more responsive.
  • Improve touch input and visual feedback.
  • Polish the 3D graphics and lighting a bit.
  • Maybe even add a Restart Game button (tiny features matter!)

Doing this now will not only make the game more fun to play – it’ll make it more enjoyable to work on and test going forward. But I’ll be careful to only implement things that feel necessary for the core game loop. Some polish, like fancy animations and sound effects, will wait for a later sprint.

Next Sprint Goals

  • Refine UI layout and responsiveness.
  • Use improved textures for the board and rings.
  • Make board movement and zoom smoother.
  • Enhance lighting and shadows.
  • Improve how the latest move and win sequences are marked.
  • Start playtesting the UX on different devices – maybe even iOS?

It’s easy to get lost in features, but having a solid playable core this early has changed how I think about the next steps. It all feels more real now.

I’ll be back in two weeks with another update. Until then – happy prototyping!

Elena