Skip to content

kleineluka/terra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Terra 🌏

Capitalism toy-selling video game server emulator from my childhood built in Node and Express. I've called it Terra because that's what the world of UB Funkeys is called! Not done yet. Please also be aware that the logs WILL be flooded with information while in development, and not a clean user experience.

Highlights 🌈

  • Stupidly simple and secure accounts with bcrypt.
  • Fast, portable and no-setup database with SQLite.
  • Readable and organised code with extensive comments (from my annoying brain).
  • Highly configurable by compartmentalising settings into JSON files.
  • Robust error handling and debugging system for further development.

Progress Tracking πŸ“Œ

Server Emulator (6/7)
  • Database
  • Environment (config, cache, user data)
  • TCP Server
  • HTTP Server
  • Packet Formatting
  • Active Connection Manager
  • Better Error Handling
Core Features (6/7)
  • Guest Login
  • Host Details
  • Server Details
  • Account Creation
  • Account Login
  • Another Login
  • Heartbeat
User Features (3/10)
  • Friend List
  • Chat Status
  • Phone Status
  • Add Friend
  • Accept Friend
  • Delete Friend
  • Send DM
  • Delete DM
  • Send Invite
  • Respond to Invite
Chat Features (0/12)
  • Create Room
  • Change Properties
  • Item Activation
  • Join Room
  • Kick Out
  • Chat Message
  • Player Move
  • Open Door
  • Put Item
  • Player Location
  • Remove Item
  • Send Event
Boxing Minigame in Nightmare Rift (0/1)
  • Boxing Action
Soccer Minigame in Daydream Oasis (0/4)
  • Ball Save
  • Character Chosen
  • Send Moving
  • Strike Parameter
Mahjong Minigame (0/3)
  • Freeze Game
  • Remove Tile Pair
  • Reset Tiles
Pool Minigame in Nightmare Rift (0/4)
  • Release Cue
  • Motion End
  • Roll Update
  • Partner Hit
Fight Minigame (0/17)
  • Block
  • Extended Punch
  • Headbutt
  • Health Reduction
  • Hit
  • Jump Kick
  • Jump
  • Kick
  • Move
  • Ping
  • Punch
  • RTT
  • Special Action
  • Score
  • Soft Reconciliation
  • Stop
  • Unblock
Chinese Checkers (0/2)
  • Movement
  • Turn Notification
Worms in Paradox Green (0/0)
  • Nothing Yet
Dominoes in Paradox Green (0/0)
  • Nothing Yet
Trunk Features (0/6)
  • Get Assets
  • Balance
  • Product List
  • User Transactions
  • Buy Product (various subcommands)
  • Send Asset
Galaxy Features (Cloud Storage) (2/5)
  • Profile Save Version
  • Statistics Request
  • Save Profile
  • Load Profile
  • Leaderboards
Multiplayer Features (0/6)
  • Leave Game
  • Ready Up
  • Message Opponent
  • Play Again
  • Chat Message
  • Draw (yes/no subcommands)
Misc. Features (0/10)
  • Clean Up Code (ex. when done remove debugging features, useless imports/exports, clean up comments, etc.)
  • Figure Out More Response Codes
  • Documentation
  • Safety Filter (ex. account name)
  • Graceful disconnection (ex. remove connection statuses on socket close)
  • Conflicting Command Handling (based on context)
  • Web Panel for Admins
  • EULA Check (by using this you wont impersonate the game)
  • Clean up inactive users regularly
  • Any random "todo" comments
  • Convert to Typescript? Hehehe.. Maybe one day..

Note: This is not an exhaustive list, just a frankenstein of A1Emu, UBFunkeysServer, and XmlMessageDoc. There are also a lot of overlapping commands, which will be properly organised in the future. Once these are complete, I will look for any missing niche commands!

Why Node? Why not continue Java or C#? 😨

By choosing Node over Java and C#, setup is lightweight and easy. The drawback is that it will not scale as well, but for a Flash game, this is more than fine. Node has many libraries established for web communication like what Terra needs and is a straightforward approach. I am not familiar with the codebases well enough to continue the other projects and a fresh start is more appealing to me.

Acknowledgements πŸ₯°

  • A1Emu (and by extension UBFunkeysServer) was a reference for the progress tracking and the server emulator. I plan for this to be a "re-implementation" of these projects initially but grow from there.
  • XmlMessageDoc has a lot of useful information about the game's packets.
  • OpenFK, JPEXS, and Wireshark for testing and reverse engineering the game client.
  • Mattel, Radica Games, and Arkadium for creating the game.

Releases

No releases published

Packages

No packages published