Navigation Menu

Toshiko

Horror Game written in the Lua-U utilizing the Roblox Engine.

roblox
lua-u
horror
game
Word Count: 571
Published Date:
Reading Time: 2m
0+ Players
0+ Favorites

This project was a first-person survival horror game developed in Lua-U on the Roblox Engine. Inspired by classics such as Resident Evil and PT, the game focuses on atmosphere, tension, and engaging gameplay.

As the sole programmer, I collaborated closely with modelers, builders, and designers to bring the project to life. My role involved implementing the game's core systems, ensuring smooth mechanics, and creating an immersive horror experience. The game is currently in its final stages of development.

Youtube Walkthrough of the game by NatureViking 20k+ Views


Youtube Playthrough of the game by Eluckcho 6.5k+ Views

Learning Experience

  • Designed and implemented a client-server architecture to handle game logic and user interactions.
  • Built a responsive inventory system with an intuitive graphical interface.
  • Developed a dynamic lighting system to reinforce the eerie, horror-driven atmosphere.
  • Created a database system to manage player data, progress, and user settings.
  • Scripted game events to deliver challenging and unpredictable scenarios.

Database and Inventory System

How it works

The database system is built as a wrapper around loleris's ProfileStore, a periodic DataStore saving solution with session locking.

The system tracks player progress, positions, settings, and inventory in different tables and distributes them across different scripts with a centralized state manager. Data can be saved automatically or manually, depending on user preference. The system was developed with an interactive GUI which allows players to click items and inspect them in 3d space using ViewportFrames.

Internals

  • As the player joins, the game checks for an existing database entry and loads the player's progress; new players are automatically assigned a new entry.
  • The database serves as a persistent store for progress and inventory, ensuring players can resume exactly where they left off.
  • A manual save system which complements the auto-save feature:
    • Unsaved progress is temporarily cached and written to a local table.
    • When the player triggers a manual save, the cached data is committed to the database.
    • This guarantees consistency and prevents progress loss even if the player exits unexpectedly.

Party System

Inspiration

The Party System was initially created to allow players to play together in the same game instance. I developed the comprehensive party system which allows players to invite friends from different servers to join their game instance.

How it works

The system communicates across servers to send requests to other players using MessagingService. Instead of waiting for an immediate response, the game server efficiently listens for events on a designated hook. This approach ensures that the server doesn't block the thread or unnecessarily consume resources while awaiting a response.

Multiplayer invite window

Custom Donation System

How it works

A Custom Donation System that lets players sponsor the developers with any amount of currency based on their preference. The system communicates to a Backend server which acts as a reverse proxy through nginx, hosted on RaspberryPi to create a new Developer Product.

Why?

Roblox does not offer support inside its game engine for creating developer products. Originally the backend was written in Rust using my roblox-api library.

Later, I realized that maintaining both, the rust package, and also working on the game would be hard. So I decided to switch to TypeScript instead and use the noblox.js package.