A Rust port of the "Heroes of Math & Mech" game. Currently macOS, Windows, Linux and iOS app. WIP.

Overview

Build

[WIP] Герои Мата и Меха

Попытка переписать известный в узких кругах текстовый квест «Герои Мата и Меха» на Rust. Ещё не закончено!

Screenshot

Оригинальная версия «Героев Мата и Меха» была написана в 1998-м году на Borland Pascal 7.0 под MS-DOS.

В 2012-м году появился порт на JavaScript, но у него есть свои недостатки.

Хотелось переписать игру с нуля, переосмыслив архитектуру, сделав её более портабельной и более async-friendly, ну и вообще чтобы красивенько было. Так в 2020-м году началась работа над тем, что ты сейчас читаешь.

На данный момент предварительные версии доступны на:

  • Windows/macOS/Linux (через командную строку)
  • iOS
  • Android
  • Web (через WASM)

А когда будет готово?

Не знаю. Возможно, никогда.

Структура репозитория

  • mmheroes-core-rs — движок квеста, написанный на Rust + сишный FFI к нему. Спроектирован таким образом, чтобы его можно было использовать независимо от способа рендеринга, будь то ncurses в терминале или UIView в iOS. Более того, поддерживает no_std, что теоретически позволяет использовать его в embedded-окружениях, например, на микроконтроллере или в ядре операционной системы. Не то чтобы в этом была цель, просто хотелось удостовериться в максимальной портабельности :)
  • mmheroes-rs — приложение для терминала, использует ncurses для рендеринга на Linux/macOS и PDCurses для рендеринга на Windows.
  • mmheroes-ios — приложение для iOS, состоит из графической части и обвязки FFI движка на Свифте. Намеренно сделано максимально тупым способом, без архитектурных излишеств.

Как собирать

Здесь инструкции для программистов. Если ты просто хочешь поиграть, то пока рано — разработка ещё в процессе (и пока не близится к завершению). Поиграй лучше в JS-версию.

Тулчейн для сборки программ на Rust можно взять здесь.

Приложение для терминала собирается с помощью Cargo (пакетного менеджера для Rust):

git clone https://github.com/mmheroes/mmheroes.git
cd mmheroes
cargo run

Приложения для iOS собирается с помощью Xcode. Но нужны некоторые дополнительные шаги:

  1. Убеждаемся, что установлен Rust.
  2. Устанавливаем тулчейны Rust с поддержкой сборки под iOS:
    rustup target add aarch64-apple-ios armv7-apple-ios armv7s-apple-ios x86_64-apple-ios i386-apple-ios
    
  3. Устанавливаем cargo-lipo. Это утилита, позволяющая создавать универсальные бинарники для iOS.
    cargo install cargo-lipo
    
  4. Открываем проект Xcode и собираем, проблем быть не должно. Проблемы всё же есть? Смело открывай issue.
You might also like...
Wasm game of life - A Rust and WebAssembly tutorial implementing the Game of Life

wasm_game_of_life Conway's Game of Life in Rust and WebAssembly Contributing | Chat Built with 🦀 🕸 by The Rust and WebAssembly Working Group About T

Managed game servers, matchmaking, and DDoS mitigation that lets you focus on building your game
Managed game servers, matchmaking, and DDoS mitigation that lets you focus on building your game

Managed game servers, matchmaking, and DDoS mitigation that lets you focus on building your game. Home - Docs - Twitter - Discord 👾 Features Everythi

A game of snake written in Rust using the Bevy game engine, targeting WebGL2

Snake using the Bevy Game Engine Prerequisites cargo install cargo-make Build and serve WASM version Set your local ip address in Makefile.toml (loca

Conway's Game of Life implemented for Game Boy Advance in Rust

game-of-life An implementation of a Conway's Game of Life environment on GBA. The ultimate game should have two modes: Edit and Run mode which can be

2d Endless Runner Game made with Bevy Game Engine
2d Endless Runner Game made with Bevy Game Engine

Cute-runner A 2d Endless Runner Game made with Bevy Game Engine. Table of contents Project Infos Usage Screenshots Disclaimer Project Infos Date: Sept

A game for the game jam
A game for the game jam "1-Button Jam 2021"

One click ninja A game for the game jam "1-Button Jam 2021" written in Rust with the Bevy engine. A rhythm game, where you play a soldier that can def

My first attempt at game programming. This is a simple target shooting game built in macroquad.

sergio My first attempt at game programming. This is a simple target shooting game built in macroquad. Rules Hit a target to increase score by 1 Score

A game made in one week for the Bevy engine's first game jam

¿Quien es el MechaBurro? An entry for the first Bevy game jam following the theme of "Unfair Advantage." It was made in one week using the wonderful B

A Client/Server game networking plugin using QUIC, for the Bevy game engine.
A Client/Server game networking plugin using QUIC, for the Bevy game engine.

Bevy Quinnet A Client/Server game networking plugin using QUIC, for the Bevy game engine. Bevy Quinnet QUIC as a game networking protocol Features Roa

Comments
  • Реализовать серверную часть и отправку рекордов на неё из клиентов

    Реализовать серверную часть и отправку рекордов на неё из клиентов

    На сервер в конце игры отправляется не результат (заработанные деньги), а шаги и зерно. Сервер выполняет верификацию, выполняя игру по присланным шагам. Если всё хорошо, то результат записывается в базу данных (вместе с шагами и зерном), потом отображается в таблице рекордов.

    Таким образом не понадобится реализовывать доступ к API по ключу.

    opened by broadwaylamb 0
  • Изучить возможность дропа unicode_segmentation

    Изучить возможность дропа unicode_segmentation

    Эта зависимость может ощутимо влиять на размер бинарника.

    Вырезать и замерить. Если размер бинарника сильно не поменялся, оставляем как есть. Иначе — вырезаем и фиксим генерацию UI.

    enhancement 
    opened by broadwaylamb 0
Owner
null
This is the core library with the full abstraction and implementation of the Minecraft protocol and logic. (Currently WIP)

MineRust (WIP) This is the core library with the full abstraction and implementation of the Minecraft protocol and logic. This project is currently WI

MineRust Project Suite 2 Nov 20, 2022
Tools for working with Retro game formats. Currently only supports Metroid Prime Remastered.

retrotool Warning Under active development, not guaranteed to be useful or even function. Tools for working with Retro game formats. Currently only su

null 4 Feb 19, 2023
A Rust port of alien, a tool that converts software packages between Linux package managers.

alien A Rust port of alien, a tool that converts software packages to work from one package manager to the next. Currently, the tool supports converti

Leah 3 Jan 19, 2023
The official Game Engine of the Li Institution - Mostly made in Rust. Still WIP

Nengine The Nengine is an open sourced game engine made by the Li Institution. As of writing this, it is in very early development and is definitely n

Li Institution 1 Aug 28, 2022
Solana Game Server is a decentralized game server running on Solana, designed for game developers

Solana Game Server* is the first decentralized Game Server (aka web3 game server) designed for game devs. (Think web3 SDK for game developers as a ser

Tardigrade Life Sciences, Inc 16 Dec 1, 2022
minesweeper-rs is a simple minesweeper game using Rust and windows-rs.

minesweeper-rs minesweeper-rs is a simple minesweeper game using Rust and windows-rs. Key Features TBA Quick Start TBA How To Contribute Contributions

Chris Ohk 15 Jun 25, 2022
Windows game hack helper utilities in rust.

⚗️ toy-arms Windows game hack helper utilities in rust. This crate has some useful macros, functions and traits. ?? How to use this crate? With this c

s3pt3mb3r 100 Jan 1, 2023
Victorem - easy UDP game server and client framework for creating simple 2D and 3D online game prototype in Rust.

Victorem Easy UDP game server and client framework for creating simple 2D and 3D online game prototype in Rust. Example Cargo.toml [dependencies] vict

Victor Winbringer 27 Jan 7, 2023
2-player game made with Rust and "ggez" engine, based on "Conway's Game of Life"

fight-for-your-life A 2-player game based on the "Conway's Game of Life", made with Rust and the game engine "ggez". Create shapes on the grid that wi

Petros 3 Oct 25, 2021
A tetris game I wrote in rust using ncurses. I'm sure that there's a better way to write a tetris game, and the code may be sus, but it techinically works

rustetris A tetris game I wrote in rust using ncurses. I'm sure that there's a better way to write a tetris game, and the code may be sus, but it tech

Eric G 3 Oct 15, 2022