Click to walk. Net fish on the reef, cut timber in the jungle, drill silat strikes on a training post, then build a boat and sail for the mainland, where a fishing town has a harbourmaster, a shop and clothes to buy. Old-school mechanics, an original world, played in a browser tab.
Perhentian Island, the training ground. A screenshot from the current build (v8).
01
The journey
The game is built in chapters, each a real place on the east coast. The route begins on a small island and works its way onto the mainland, one region at a time.
1
Perhentian Islands
Playable
The training ground. Guru teaches you to feed yourself, fight and build a perahu, a small boat. Two islands, a reef to fish, crabs on the sand and monitor lizards in the jungle.
2
Kuala Besut
Playable
Landfall. The fishing town where the mainland begins: a jetty, a harbourmaster, Kak Yah's sundry shop and the first clothes to buy, prawns in the river and tuna off the jetty, and a boat back to the island whenever you want it.
3
Terengganu coast
Next
Silat weapon families with different reach and speed, keris and other blades, songket armour, and the first real dungeon.
4
The rest of the peninsula
Later
Down the coast and across the hills. Sabah and Sarawak after that. Each region brings its own skills, foods and people.
02
How it plays
The feel of the browser MMOs of the 2000s: a world that moves on a tick, skills that reward time, and a camera you can swing around freely. Everything else is new.
The tick600 ms
Every action in the world happens on a tick. Click a tile and your character finds a path and walks it, one tile per tick, eight directions, no cutting corners.
Skills7
Fishing, Woodwork, Cooking, Attack, Strength, Defence and Body. The classic curve: level 99 takes about 13 million XP, and the first levels come fast.
Combat3 stances
Train Attack for accuracy, Strength for power or Defence for dodging. Hitsplats, XP drops, food to eat mid-fight, and monsters that come back.
Camera360°
Drag to orbit, scroll to zoom, arrow keys to turn, tap the compass to face north. Pinch and press-and-hold on a phone.
World2 maps
Each 90 by 60 tiles. The islands are grown from seeded noise, so the map is the same for everyone. Kuala Besut is laid out along a river, with scenery running past its edges so the mainland never ends in a cliff.
Weight1 file
The whole game is one HTML file of about 2,300 lines, with three.js loaded from a CDN. No install, no engine, no build step. Progress saves in your browser.
Every model is built in code from boxes, cylinders and icosahedra, flat-shaded and merged into a single mesh. The character is assembled from garment slots (hat, top, sarong, bottom, shoes, vest, weapon) so that shops and equipment can change how you look. Since v8, they do.
Skills keep their Malay names beside the English ones in the game.
Fishing Nelayan
Woodwork Tukang Kayu
Cooking Masak
Attack Serang
Strength Kuasa
Defence Tangkis
Body Tubuh
03
Build journal
How the game got here, one published version at a time. Each entry starts with the note from the player that set it off. October 2026.
v0prologue
It started with a question
PlayerWhy did RuneScape become viral?
Not a plan, a question. Talking through why RuneScape caught on (it ran in a browser, it was free, the skills rewarded time, and the world felt shared) led straight to the next message: let's make a game with the same mechanics, but change the theme, the weapons and the map, and start with a small one.
The setting came quickly. Malaysia, with silat for the weapons and skills and armour named for the culture. Terengganu was the first idea for a starting place. Then a better one: begin on the Perhentian Islands as a training ground, and take a boat to the mainland. That gave the game its tutorial, its first chapter, and its first quest.
v0.5prototype
Brinefall, a throwaway island
Before any of the Malaysian world existed, a small test island on a flat 2D canvas: 44 by 30 tiles, a tick loop, click-to-walk pathfinding, trees to cut, fish to net, a fire to cook at and crabs to avoid. It proved the loop worked and was then set aside.
v12D
Pendekar, the whole game in 2D
The first real build. A 60 by 40 world with two islands grown from seeded noise, so every player gets the same map. Eight-direction pathfinding that refuses to squeeze through diagonal gaps. The RuneScape XP table. Seven skills, a 20-slot pack, crafting at the boatyard, two monsters with their own tempers, Guru's tutorial quest, and a save in the browser.
It was checked before it was looked at: object counts, monster counts and whether every tree and fishing spot could be reached from the beach were tested in a headless run. Palm trees came up short the first time, so the beaches got more of them.
v23D
Too rubbish, so: low-poly 3D
PlayerI want you to think of a good system to use to make the graphics better. At least Old School RuneScape level. It's too rubbish right now. Let it rotate freely like OSRS.
The 2D tiles went. In their place, a three.js renderer in the low-poly style: the tile map becomes a heightfield that rises gently inland, the sea is a translucent plane with a scrolling texture and foam strips along every shore, a sun casts soft shadows, and fog settles over the far water. Every tree, palm, fire, boat frame and creature is built from a few primitives, coloured per vertex and merged into one flat-shaded mesh.
The camera orbits the player freely, with drag, scroll, pinch and arrow keys, and a compass to face north. The game logic did not change at all. The renderer was swapped underneath it. On top came the interface: right-click menus, hover labels in the familiar colours, hitsplats, XP drops, and a minimap with a wedge showing where the camera looks.
The training island from above, as it is today, after the jungle was thinned in v4.
v3text
English first
PlayerMake things mainly in English first.
The first builds led with Malay: Tukang Kayu, Nelayan, unggun, bengkel. Reading them cold was work. The names were flipped so English leads and the Malay sits beside it, in the Skills tab and in every item tooltip. Guru still says toya and perahu, and explains them the first time.
v4world
Bigger islands, fewer trees
PlayerIsland is a bit small, and too many trees.
The world grew from 60 by 40 to 90 by 60 tiles, about 2.2 times the land. Cuttable trees dropped from around 100 to 29, palms to 9, with more open grass between them. To keep the bigger island busy, fishing spots went up to 18 and the monsters to 21: fourteen crabs on the beaches and seven monitor lizards in the jungle.
v5people
People with necks
PlayerCan we make the people better? They have no necks. Remember, later we will allow people to buy or wear stuff.
The character rig was rebuilt: a neck, shoulders, a slimmer waist, a jaw, ears, a nose and a mouth. More important for later, every visible garment became a slot: hat, top, belt or sarong, trousers, shoes, vest, weapon. An item can swap any of them, which is what shops will need. Guru wears a tanjak, a folded headcloth; the player a songkok.
The player after v5, with the toya Guru hands over in the first conversation.
v6motion
Smoother steps
PlayerThe walking is too robotic. Please make it smoother steps.
Characters used to snap from tile to tile with straight legs. Now the drawn body glides toward its tile with a damped follower, which rounds corners and eases every start and stop. The stride is tied to distance travelled, so feet never slide. Knees and elbows bend, hips sway, the torso twists against the hips, and turning speed no longer depends on the frame rate. Crabs and lizards got the same treatment.
One stride, five frames about a fifth of a second apart, captured by stepping the game clock one frame at a time.
v7quests
A journal for quests
PlayerWe need a section for the quests.
A Quests tab joined Pack, Skills, Craft and Gear. The tutorial became a named quest, Castaway's Training, with eight steps that tick off as you go and counters that update live. The next quest, Landfall at Kuala Besut, sits locked underneath it. A dot on the tab shows when something changed, and the chat log announces quests starting and finishing.
Testing the tab turned up a bug: Guru's dialogue box stayed on screen after you closed it. Fixed in the same version.
The Quests tab mid-tutorial, as it looks now. The two cards below it arrived in v8.
pagethis site
A place to tell the story
PlayerLet's make a landing page first, and actually document our journey in building this.
This page. The screenshots on it are taken from the real build in a headless browser, the map is a simplified outline of the peninsula drawn in code, and the journal grows with every version.
v8chapter 2
Landfall at Kuala Besut
PlayerI was working on this game, let's continue.
The roadmap already said what came next, so that was the brief. The boat from the end of the tutorial now sails: the view fades to night sea, a small perahu crosses a dotted line, and you tie up at the end of a jetty in Kuala Besut, where the Besut river meets the sea.
The town is a second map: a beach, a river lined with painted east-coast fishing boats, a bridge, stilt houses, a mosque with the tiered roof of old Terengganu mosques, and a fish market. Two people live there. Encik Rahman is the harbourmaster, a post once called syahbandar. Kak Yah runs the sundry shop.
Kuala Besut from the end of the jetty: the fish market, the harbourmaster's office, Kak Yah's shop, and the river mouth on the left.
Coins came with her: ringgit, earned by selling what you catch and cut. The garment slots from v5 finally paid off. A terendak (straw hat), a baju Melayu, a kain pelikat (checked sarong) and capal (sandals) each change how the character looks the moment you put them on. The river has giant prawns, the end of the jetty has tuna for anyone with Fishing 12, a charcoal grill cooks them, and macaques in the forest drop coins they stole from someone.
The first outfit from Kak Yah's shop, worn on the village road: terendak, baju Melayu, kain pelikat and capal.
Underneath, the world was rebuilt as zones so the game can hold more than one map, and saves from v7 carry straight over. The mainland needed land past the edge of the map so it would not end in a cliff, and at first that drew 317,000 triangles a frame. Merging the scenery into chunks the camera can skip brought it down to about 37,000 at the jetty.
A headless playthrough of the new quest, fifteen checks from boarding the boat to sailing home, caught two things before anyone saw them: the fish market had been built half in the sea, and the jetty sign read backwards from the boat.
04
What comes next
Written the way the game writes its quests. Order is a plan, not a promise.
The road to Kuala Terengganu Next
Chapter 3. The coast road south, once the monsoon floods go down.
Open the road south from Kuala Besut
Kuala Terengganu: a bigger town, a bigger market
Songket armour
The first real dungeon
Dressed for it Started
Shops, and clothes that show on your character.
Tops, sarongs, hats and shoes as items
Coins, and a way to earn them
A character creator: body, skin, hair
More shops, more colours
Ways of silat Planned
Weapon families with their own reach and rhythm.
Reach: the toya and other staffs
Quick: keris and short blades
Heavy: parang and the like
Songket armour, and an inner-power skill under consideration
More to do on Perhentian Planned
Side quests for players who are not ready to leave.
Errands for the island's few residents
Rarer fish, and a reason to cook them
A hidden spot or two
Landfall at Kuala Besut Done
Cross the sea and find your feet on the Terengganu coast. Shipped in v8.
Build and launch the perahu
Sail to Kuala Besut
Meet the harbourmaster
Buy your first piece of gear
Take the boat back to the island, any time
05
How it is built
Pendekar is designed by one player and built with Claude, in a single running conversation. There is no studio and no engine. The game is one HTML file with three.js for the 3D, the logic and the renderer kept apart so that either can change without the other.
Mechanics borrow from the browser MMOs that inspired the project. The world, the names, the models and the map are original.
1The player writes a note. Usually one line: what feels wrong, or what is missing.
2The change is built, with the game logic and the renderer kept separate.
3The result is loaded in a headless browser and screenshotted, and counts like trees and monsters are checked.
4Tuned, published as a new version, and written up here.