-
-
Online shogi where 4 to 6 of your pieces are swapped for strange ones before the match starts. Both players get the same set.
-
Tap a piece and its range appears. The panel underneath is its ability — this one runs any distance along the edge of the board.
-
Pieces register here when you meet one in a game. Each has a movement diagram generated from the rule engine, and a 0-10 rating.
-
One draw a day, after you finish a game. The plaque joins an upper and a lower card, each coloured by its own rarity. Display only.
-
Rating, grade and collection progress. Ranks never drop: a grade records how far you climbed, the rating says where you are now.
-
raw icon
-
raw screen shot
Inspiration
Shogi is one of the most widely played board games in Japan. On the iOS store there is Shogi Wars, supervised by the Japan Shogi Association, and Shogi Quest, a much-loved indie app. I play both of them myself.
Like chess, shogi makes studying openings and established forms a prerequisite for climbing into the higher grades. Play for a while and you start to feel that wall of study standing in front of you.
I wanted to build something where your judgment in the moment counts toward winning more than how much you have studied beforehand. The reason was simply that I wanted to enjoy shogi without having to study for it — a lazy motive.
So I arrived at an approach: add a large number of pieces with new effects and abilities, enough to make the opening theory people have researched for so many years almost meaningless.
On top of that, I wanted to keep what makes shogi good — that it is a game of perfect information, and that both players compete from a nearly equal starting line. So I kept randomness out of the contest itself, and gave both players the same set of pieces. What came out was a new board game where the appeal of shogi and the casualness I was after fit together well.
What it does
Strange Shogi is online shogi in which some of the normal pieces are replaced with strange pieces.
When a match starts, 4 to 6 of the pieces other than the king are replaced with strange pieces. The replacement is point-symmetric, so both players get the same set. There are 54 strange pieces in total, and 51 of them can appear at the opening. The archer, for example, captures a distant piece without moving. The spider pulls an enemy in with its thread. The magic hand pulls a distant enemy to the square in front of it. The rock cannot be captured. The bacterium can only move onto empty squares, and it disappears when it is captured.
Because the set is different every time, you cannot apply opening theory directly. Each player has five minutes of sudden-death time, and you play against other users. When nobody is waiting, a bot takes their place.
Everything else follows the normal rules of shogi.
How I built it
I built this mostly with Codex. I have almost no background in mobile app development, and I cannot read code. Quality is held together by test code and by checking the behaviour myself.
This is also the first online game I have made. At first I implemented the piece abilities and the board calculations on the app side, but as I read up on how online games are usually built, I moved to having the server compute the legal moves. The app only displays what the server has worked out.
The extra WebSocket round trips make the response slower, but adding pieces or changing rules no longer requires an app release.
Challenges
The game was working correctly fairly early on, but for some reason it was not enjoyable to touch. Compared with existing shogi apps there should have been nothing wrong with it as a game.
So I spent time playing several shogi apps carefully and looked at how they differed from mine. What came out of that was that the response you get to your own input has a large effect on whether something feels fun. I then spent a week adding sound effects, haptics, and motion effects for piece movement. That made the game more addictive, and produced the feeling of wanting to play one more game right after finishing one.
What I learned
What makes a game fun is interactivity. Even in places that have nothing to do with the gameplay itself, the more response you get to the action you took, the more hooked you get. When developing with AI, write the specification and the decisions into a single source of truth document, and have the AI judge and act on that basis. When your own instruction departs from the SSOT, it works best to have the SSOT updated first and only then have the work carried out.
Built with
Swift, SwiftUI, Core Haptics, AVAudioEngine, Node.js (no framework), WebSocket, AdMob, RevenueCat, PostHog, Terraform, Caddy, AWS Lightsail.
RevenueCat is integrated through the AdMob adapter, and tracks ad revenue linked to each user. In-app purchases are not implemented yet. The server side already has the mechanism for handling an ad-free entitlement, but I intend to hold it back until there is enough there to be worth charging for.
What's next
English localization. The board is in kanji, so swapping out strings is not enough on its own. The 40,000 title combinations rely on how the words sound in Japanese, so they have to be written from scratch rather than translated. Subscription benefits such as ad-free play. Spectating. I will start on it once enough games are running at the same time. A match format where you build a deck out of pieces, with pieces collected through gacha, through matches, and through other game modes. Marketing. Posting gameplay videos every day on the official X account, YouTube, TikTok and Instagram, and asking shogi influencers to promote the app.
Built With
- admob
- amazon-cloudwatch
- amazon-route-53
- amazon-sns
- amazon-web-services
- avfoundation
- aws-lightsail
- caddy
- codex
- core-haptics
- ffmpeg
- node.js
- posthog
- python
- revenuecat
- swift
- swiftui
- systemd
- terraform
- websocket
- ws
- xcodegen
Log in or sign up for Devpost to join the conversation.