Extensible open world rogue like game with pixel art. Players can explore the wilderness and ruins.

Related tags

Games game rust roguelike
Overview

Rusted Ruins Build Status

Extensible open world rogue like game with pixel art. Players can explore the wilderness and ruins. This game is written in Rust.

Screenshot

Ruin (Example of auto generated map)

exploring-ruin

Town (Example of created map by map-editor)

town

Video

https://www.youtube.com/watch?v=CUMPWX-teaY

Game Objective

The player arrives at a recently discovered continent where a lot of ruins remain. The player will explore ruins and fight against monsters. By collecting relics in ruins, the player can earn money and fame, and solve the mystery of the ruined nation.

Status

This is a very early project. Many features for playing are not completed.

Binary format of pak files and save files may be changed before version 1.0.

Changelog

See this wiki.

Design

  • 2D graphics.
  • Easy to extend by the pak file system. Most of assets are packaged as pak file. Pak file can be created by makepak. Users can add new characters, items and dungeons easily by pak file system.
  • Map editor to create new map.
  • Script to describe talks and events in game.
  • Open world. Provide many playing style for players. The game objective will be different by players.

Pak files

In this game, most of image data and many assets are handled as XXObject. XXObject is packaged to pak files. Their file extension is "pak". Pak files and the sources are under rusted-ruins-pak.

Precompiled packages

For Windows user, you can download from Releases page. Deb package is also available.

How to build and try

Please install SDL2 libraries at first. For Ubuntu users:

sudo apt install libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev libsdl2-mixer-dev

Rusted Ruins is written in Rust, so please install Rust compilation tools. You can use rustup to install Rust.

After that, clone this repository, download pak files, and run.

git clone https://github.com/garkimasera/rusted-ruins.git
cd rusted-ruins
./build-pak.sh
RUSTED_RUINS_ASSETS_DIR=./assets cargo run --release -p rusted-ruins

If you are a Windows user, you can download from Releases page.

How to operate

Operate the player character with the keyboard and mouse.

Left click on tiles - Move to the tile, melee atack, or start talking.

Left click + Ctrl - Shoot by the ranged weapon.

Left click + Shift - Use the equipped tool.

Right click - Open action menu. Actions for specified tile are available through the menu. For example, you can use stairs and enter/exit the map by opening menu at the tile that player is on.

WASD or Arrow key - Move

Enter key - Enter towns or dungeons, walk up/down stairs, and select an answer when talking.

Sidebar

There are some icons on the sidebar. Click icons to open windows.

Icon list

  • Inventory window
  • Equipment window
  • Status window
  • Creation window
  • Game information window
  • Save / Exit game

Shortcut keys

d - Drop items

e - Eat an item

g - Pick up items

h - Help

q - Drink an item

r - Release an magical device item

0..9 - Call shortcut registered by player

f1 - open item window

f2 - open equipment window

f3 - open status window

f4 - open creation window

f5 - open game info window

f6 / escape - Open exit window

f12 - Debug command

License

GPL v3

Comments
  • Abstracted mixer context into an enum so users don't need audio to play.

    Abstracted mixer context into an enum so users don't need audio to play.

    Trying to play the game without audio was failing before.

    I added an enum MixerContext with two variants: SDL2MixerContext and NullMixerContext. I also added checking around the existence of AudioPlayer when playing audio, instead of just asserting.

    I also added a test to make sure the game doesn't panic when audio isn't initialized.

    Let me know if you have any requests for changes. It's a relatively small change that fixes my issue. But you may want to architect this differently, for example abstracting out other fields in the SdlContext structure in main.rs or renaming it to something.

    Thank you for your time and the great game you've made.

    opened by jgerrish 2
  • Version 0.12

    Version 0.12

    • [x] Generic quest system
      • [x] Custom quest by script
    • [x] Script reworking
      • [x] Spawn separated thread for RustPython
      • [x] New functions to integrate quest system
    • [x] Customizable weapons
    • [x] Add cursor image
    • [x] Improve damage popup
    opened by garkimasera 0
  • Version 0.11

    Version 0.11

    • [x] Food item rotting
    • [x] Container items
      • [x] Ice box
      • [x] Compost bin
      • [x] Seed maker
    • [x] Factions
    • [x] Ally npcs
      • [x] Pack animal
    • [x] Character level
    • [x] Character trait
    opened by garkimasera 0
  • Version 0.10

    Version 0.10

    • [x] Use RON format for obj input instead of TOML
    • [x] ItemAttribute generation and Attributes for ItemObj
      • [x] Deconstruct scrap items
      • [x] Harvestable plant items
    • [x] Basic agriculture
    • [x] Better enemy AI
      • [x] Pathfinding
      • [x] NPC ranged attack
      • [x] Enemy detection
    • [x] Wilderness item generation
    opened by garkimasera 0
  • Version 0.9

    Version 0.9

    • [x] Throwing items
      • [x] Grenade
      • [x] Common item damage by weight
    • [x] Mining
      • [x] Ore items appear after mining walls
      • [x] Vein tile generation on maps
    • [x] Player action shortcut toolbar
    • [x] Basic creation/craft recipes
      • [x] Art
      • [x] Pharmacy
    • [x] Outdoor map generation
    • [x] Display HP healing value
    • [x] Deb package build
    opened by garkimasera 0
  • Version 0.5

    Version 0.5

    • [x] Magic devices
    • [x] HP regeneration
    • [x] Use attributes of equipment when calculating damage
    • [x] Help window
    • [x] Migration of l10n system to Fluent
    • [x] Debug command
    opened by garkimasera 0
  • Version 0.4

    Version 0.4

    • [x] Basic instruction at game start
    • [x] Introduce hit & miss to combat system
    • [x] Improve ItemWindow UI
    • [x] Item creation and recipe system
    • [x] Cooking
    • [x] Reimplement turn loop
    • [x] Reimplement Time ~~Item attributes and enchants~~
    opened by garkimasera 0
  • Version 0.3

    Version 0.3

    List of features to implement

    • [x] Add id-idx table to save data
    • [x] Save data is in multiple files in one directory
    • [x] Basic quests
    • [x] Improve window tab display
    • [x] Migration to Rust 2018
    • [x] Reimplement ListWidget
    opened by garkimasera 0
Releases(v0.12.0)
Owner
T. Okubo
T. Okubo
Uisge is a board game for 2 players with simple rules.

Uisge Uisge is a board game for 2 players with simple rules. This application allows you to play Uisge against the computer in your terminal. Rule sum

null 2 Jan 26, 2022
Match up block edges and get your center of mass as low as possible. World of Goo meets dominoes!

Excavation Site Alpha Match up block edges and get your center of mass as low as possible. World of Goo meets dominoes! Drag blocks off the conveyor b

petrak@ 2 Oct 12, 2022
A work-in-progress, open-source, multi-player city simulation game.

Citybound is a city building game with a focus on realism, collaborative planning and simulation of microscopic details. It is independently developed

Citybound 7.2k Jan 3, 2023
The video game for Fonts of Power. A tabletop roleplaying game made in Rust with Bevy!

The code and rules for Fonts of Power, a tactical TTRPG / video game about exploring magical places. You can follow its development in our Discord ser

null 25 Dec 23, 2022
Red Light, Green Light is a traditional Korean children's game, popularised by the Squid Game TV series.

Red Light, Green Light Red Light, Green Light is a traditional Korean children's game, popularised by the Squid Game TV series. This project is the di

Cedric Chee 1 Jan 10, 2022
A game inspired by the classic atari game: demon attack

rusty_demon_attack A game inspired by the classic atari game: demon attack You can play the game in the web!

null 58 Jan 4, 2023
Twenty48 - an implementation of the 2048 where users can compete against each other

Twenty48 is an implementation of the 2048 game to demonstrate WebAssembly, Progressive Web Apps and Wasmcloud.

Jonas Hagmar 3 Mar 4, 2022
Pong-like videogame made with Rust and Bevy

Rust pong Pong-like videogame made with Rust and Bevy Features Correct Physics AI Score Wasm TO DO Score Wasm Multiplayer How to run For the desktop v

Hector Pulido 6 Aug 22, 2022
4fun open-source Cave Story reimplementation written in Rust

doukutsu-rs Download latest Nightly builds (Requires being logged in to GitHub) A re-implementation of Cave Story (Doukutsu Monogatari) engine written

null 564 Jan 1, 2023
Data-oriented and data-driven game engine written in Rust

What is Amethyst? Amethyst is a data-driven and data-oriented game engine aiming to be fast and as configurable as possible. Principles These principl

Amethyst Engine 7.9k Dec 31, 2022
Minesweeper game developed with Rust, WebAssembly (Wasm), and Canvas

?? click here to play the game ?? Minesweeper game Revealing all the cells without hitting the mines is the task. Each number in the cell denotes how

Karthik Nedunchezhiyan 23 Dec 28, 2022
A minesweeper game with a terminal and graphical interface

Mine A minesweeper game with a terminal and graphical interface created by Koen Westendorp. Installation Go ahead and try out for yourself! :) git clo

Koen Westendorp 3 Dec 22, 2022
A block game made in Rust and SFML

septadrop A block game made in Rust and SFML. For packaging instructions, see the build folder. Game Controls ??/?? arrow keys: horizontal movement ??

Elnu 1 Dec 19, 2022
Planetoid is a toy project to demonstrate and learn several technologies. The goal is to create a little multiplayer asteriod game clone.

Planetoid is a toy project to demonstrate and learn several technologies. The goal is to create a little multiplayer asteriod game clone.

René Ribaud 8 Aug 23, 2022
A space shooter game made with Amethyst and Rust.

Theta Wave Project Introduction This game was made with the Amethyst engine. It is inspired by games like Raiden and The Binding of Isaac. Game Introd

Theta Wave 192 Oct 7, 2022
Mk48.io is an online multiplayer naval combat game, in which you take command of a ship and sail your way to victory

Mk48.io Game Mk48.io is an online multiplayer naval combat game, in which you take command of a ship and sail your way to victory. Watch out for torpe

Softbear Studios 160 Jan 2, 2023
A roguelike game in Rust

A fantasy deathcrawl in Rust Work in progress. To run, with Rust compiler and Cargo package manager installed: cargo run --release When building on W

Risto Saarelma 347 Nov 21, 2022
😠⚔️😈 A minimalistic 2D turn-based tactical game in Rust

Zemeroth is a turn-based hexagonal tactical game written in Rust. Support: patreon.com/ozkriff News: @ozkriff on twitter | ozkriff.games | facebook |

Andrey Lesnikóv 1.3k Jan 5, 2023
⬡ Zone of Control is a hexagonal turn-based strategy game written in Rust. [DISCONTINUED]

Zone of Control The project is discontinued Sorry, friends. ZoC is discontinued. See https://ozkriff.github.io/2017-08-17--devlog.html Downloads Preco

Andrey Lesnikóv 354 Nov 14, 2022