This site is driven by two keys, like the machine it came from. Reading: j and k scroll, d and u move half a page, gg goes to the top, G to the bottom, H and L switch windows, ? opens the help. Space is the Neovim leader and handles content: Space then h home, r research, p projects, g gear, a about, / tags, or Space then a digit to jump to that window. Home is the tmux prefix and handles windows: Home then c opens a terminal, Home then & closes a window, Home then space goes to the next one. While focus is on the keyboard, h j k l move between keys and Enter opens one.

ResearchR AboutA Gear — G for gear — keyboard, terminal, editor, homelab.G
    ProjectsP Tags — / as in vim: search./
    ×
    Menu

    Tombakan: An AR Spearfishing Game That Teaches Fish

    A Unity AR game where you place a water surface in your actual room and spear the fish matching a target colour. Seven weekly iterations, a tester report each time, and a scope that grew from a colour drill into a marine-life learning game.

    Pembuatan Game AR Tombak Ikan menggunakan Unity AR Mobile

    Tombakan is Indonesian for spearing fish. You point your phone at the floor, the app finds the plane, and a water surface drops into your actual room. Fish swim across it. A target colour appears, and you throw a spear at the fish that matches.

    That is the whole loop, and for the first weeks it was the whole game.

    The scope changed on purpose

    The build started as a colour-matching drill: see a colour, hit that fish, score a point. It worked, and it was boring in the way a drill is boring — there was nothing to come back for.

    The ROADMAP.md in the repo records the turn. The game became a marine-life learning game with three pillars instead of one: learn the fish you spear (colour first, then real Indonesian species names), collect them into a Fishipedia with facts attached, and progress through a persistent player level that unlocks content. Cosmetic spear skins came along as the reward that is not a power-up.

    The principle written down alongside it is the one that made the change cheap: fish and spears are defined as data, decoupled from art. Adding a species is adding a row, not a scene.

    Seven weeks, seven tester reports

    The repo is unusual for a coursework project in one way: every iteration has a scope document written before it and a tester report written after it. ITERATION_week1_SCOPE.md through week 6, TESTER_REPORT_week1.md through week 7. The ITERATION_LOG.md lists each task and the exact files it touched.

    Reading them back, the bugs are the honest kind — the ones you only find by playing:

    • OnFishHit scored hits that landed after the timer ran out, because nothing checked gameRunning.
    • PlaceWaterOnPlane would happily place a second water surface if you looked at another plane, so the room ended up with two.
    • FishSwim was being attached twice, and the duplicate fought the original over the same transform.
    • The result screen showed +0 XP and an accuracy of 0.0% for a round where you never threw anything. Both are technically true and both read as bugs, so they became "--" and nothing at all.

    None of those are architecture problems. They are what happens between “the feature works” and “the feature is finished”.

    What it is built on

    Unity 2022.3.62f3 LTS, one scene — GamePlay.unity. AR comes from ARFoundation 5.2 with ARCore and ARKit behind it, so the same project builds for Android and iOS, plus the XR Interaction Toolkit for the throw.

    One setting mattered more than it looks: AndroidMinSdkVersion came down from 35 to 24. Twenty-four is where ARCore starts, and anything above it just narrows the pool of phones that can run the thing for no benefit. An AR game that only installs on new phones is an AR game nobody tries.

    Tests arrived late and deliberately narrow. com.unity.test-framework was already in the manifest; what was missing were assembly definitions. The PlayMode tests cover the scoring contract and the accuracy formatting, because those are the two places where a silent change would look like a correct number.

    Where it is now

    Still in progress. The loop, the Fishipedia, levels and the achievement toast are in; the species data is thin and the art is placeholder in places. The repository has the roadmap, every iteration scope and every tester report, which between them describe the state of it more precisely than this page can.

    id en
    rss gh in