A cross platform classic RPG game creator written in Rust.

Overview

forthebadge made-with-rust

Eldiron - Classic RPG Creation

Create RPGs for every platform with Eldiron.

Eldiron v1 will be able to create games similar to the classic Ultima series but with modern features.

MIT License version macOS Windows Linux Discord Patreon Twitter

screenshot

Eldiron is a cross platform RPG engine. Eldiron Creator itself runs on all Desktops (Mac, Windows and Linux) while the game clients also run on iOS and Android devices and on any other device Rust compiles on. The engine is designed from the ground up to be extremely portable.

Eldiron comes with a range of freely usable tile-maps, however you can of course use your own maps.

The game engine contains client and server modules, although currently no multi-player options exist yet, the code has been written with multi-player support in mind from the ground up.

Support for retro 3D areas like dungeons is upcoming. In general I want to explore many different ways to display and create content, from procedurally created tiles to 3D assets. These kind of features will get implemented over time.

Join the community on Discord.

Eldiron Book

Below on this page is an overview of the functionality of Eldiron Creator. However I am currently working on the Eldiron Book. Please refer to the Book for more detailed information on the creator, the server and clients and the overall project.

Updates

Please see my development blog for updates on Eldiron here.

Installation

Eldiron is written in Rust, to run it you have to install Rust and its package manager cargo. Please follow the instructions on this page.

After you successfully installed Rust, clone this repository (or download the source via a .zip file), open a terminal, navigate to the Eldiron directory and start Eldiron with cargo run --release.

At a later stage I will provide pre-build binaries for each platform.

Tiles View (95% Done)

update_screenshot

In the Tiles view you can assign roles and animations to individual tiles in the currently available tilemaps.

Eldiron reads all assets from the assets directory, this is a top level directory in this repository. If you want to add your own tilemaps to Eldiron you will need to paste the tilemap image into the assets/tilemaps directory. Note that right now only tilemaps with square tiles are supported.

You can multi-select a range of tiles (via mouse click and drag) and by clicking the Set Anim button you create an animation for the first tile in the range. The other tiles will be set to Unused by default.

When you click the Enter Tags button you can assign , separated tags to a tile, like cupboard or waterfall. Tags are always lower case.

The Clear Anim button will remove an animation sequence form the currently selected tile.

The Set Default button will set the currently selected tile as the default tile of the tilemap, it will be shown as a tilemap icon in the tilemap overview.

The roles a tile can have are:

  • Unused - This tile is ignored and will not be shown in the area editor.
  • Environment - This is the default tile type for any kind of non blocking terrain. Use it for grass, floors etc.
  • Road - Same as Environment but the AI in the upcoming Pathfinder node will prefer road tiles over environment tiles.
  • Blocking - Every environment tile which is not accessible to the player, like rocks, mountains, walls etc.
  • Character - Character tiles, like animation tiles for a warrior.
  • Utility - Utility character tiles. Like a ship or a horse.
  • Water - Water tiles. Tiles where a ship can go.
  • Effect - Effect tiles, like an explosion.
  • Icon - Icons.

Note that the behavior and look for tiles in a certain area or for a given tile in general can be freely adjusted via the Behavior node system.

The Regions View (70% Done)

Regions are game regions (like a city, dungeon or the world itself) or screen space regions (like a specific UI area).

The regions view has 3 different modes.

Drawing Tiles

screenshot

At the bottom of the view you can select the tiles of the selected tilemap (or tilemaps). You will see all tiles you marked as Environment, Road, Blocking or Water.

You can view all tiles of all tilemaps or select a specific tilemap. Also you can enter tags to only show tiles containing this specific tag. Useful for quickly finding tiles.

Select a tile and click and drag in the region to apply the tile to the area map.

While the basic functionality of the area editor is working, some functions are missing:

  • Undo / Redo
  • Rectangular operations (cut / copy / paste / move / copy) etc.
  • Assigning tiles to groups

Editing Areas

screenshot

Areas are a named group of tiles inside a region. They are useful to mark specific game areas of interest (like a house of a character you want to mark or use in the Pathfinder node) or maybe you want to spawn monsters in the area, lay a trap or displace tiles.

You can add, delete or rename areas. In Add Mode new tiles are added to the area while in Remove mode tiles are removed from the area.

Area Behavior

screenshot

You can assign behavior to a specific area in the view. For example in the above screenshot, if any character is inside the area around the door, the door icon is replaced with a floor icon to simulate an opening door.

Characters View (80% Done)

screenshot

In this view you are able to create any kind of behavior for characters.

Systems View (80% Done)

screenshot

The Systems view is similar to the Characters view. It's main function is to be able to create reusable behavior trees which can be invoked from any character. Like in the above screenshot is a basic implementation for a Combat system with a Melee tree. You would not want to create a combat system for every character, but a general one which uses the variables of the character to calculate damage dealt and received. You can of course still write customized individual AI for specific characters.

But apart from Combat you can of course also implement other Systsems, like crafting or farming.

Items View (0% Done)

A specialized node view for in game items and their stats, modifiers and special effects.

Game View (30% Done)

A specialized node view for the overall game logic.

License

The source and all assets I commissioned for Eldiron are licensed under the MIT. You can use the source and assets freely.

Supporting Eldiron

You can support the Eldiron project by becoming a Patreon. I am also looking for art donations. If interested contact me on Discord.

Acknowledgements

You might also like...
This is a Minecraft Classic server written in Rust powered by tokio and classicl.

classicl_server Introduction This is a Minecraft Classic server written in Rust powered by tokio and classicl. Installation Cargo The project can be i

Cross-platform game engine in Rust.
Cross-platform game engine in Rust.

Cross-platform game engine in Rust.

Neutral cross-platform Rust game template

Rust Game Template Neutral cross-platform Rust game template. Build tool This project uses cargo-make task runner. It's required to build the project.

This is a cross-platform tool to historicize different branches/depots/manifests and generating pseudocode for it to compare different game updates
This is a cross-platform tool to historicize different branches/depots/manifests and generating pseudocode for it to compare different game updates

CSHP This is a cross-platform tool to historicize different branches/depots/manifests and generating pseudocode for it to compare different game updat

Classic snake in RUST!
Classic snake in RUST!

rusty_snake Classic snake game built in Rust using Piston Window. Running the game Requirements Rust Cargo Steps to run git clone https://github.com/c

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

Cross-platform (including wasm) persistent key value store plugin for rust games/apps

bevy_pkv bevy_pkv is a cross-platform persistent key value store for rust apps. Use it for storing things like settings, save games etc. Currently, it

Cross platform rendering in Rust
Cross platform rendering in Rust

Miniquad Miniquad is a manifestation of a dream in a world where we do not need a deep dependencies tree and thousands lines of code to draw things wi

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

Comments
  • Error

    Error "folder '/Users/myName/GitHub/Eldiron/core_embed_binaries/embedded/' does not exist"

    What my intention was:

    Download the repo and start the Creator

    What was the result?

    ❯ cargo run --bin creator
       Compiling libc v0.2.132
       Compiling cfg-if v1.0.0
       Compiling proc-macro2 v1.0.43
       Compiling quote v1.0.21
       Compiling unicode-ident v1.0.3
       Compiling syn v1.0.99
       Compiling bitflags v1.3.2
       Compiling version_check v0.9.4
       Compiling autocfg v1.1.0
       Compiling core-foundation-sys v0.8.3
       Compiling cc v1.0.73
       Compiling log v0.4.17
       Compiling rustc-hash v1.1.0
       Compiling glob v0.3.0
       Compiling memchr v2.5.0
       Compiling foreign-types-shared v0.1.1
       Compiling block v0.1.6
       Compiling typenum v1.15.0
       Compiling minimal-lexical v0.2.1
       Compiling lazy_static v1.4.0
       Compiling bindgen v0.59.2
       Compiling wasm-bindgen-shared v0.2.83
       Compiling regex-syntax v0.6.27
       Compiling once_cell v1.14.0
       Compiling shlex v1.1.0
       Compiling lazycell v1.3.0
       Compiling peeking_take_while v0.1.2
       Compiling smallvec v1.9.0
       Compiling bumpalo v3.11.0
       Compiling termcolor v1.1.3
       Compiling serde_derive v1.0.144
       Compiling byteorder v1.4.3
       Compiling cty v0.2.2
       Compiling hashbrown v0.12.3
       Compiling wasm-bindgen v0.2.83
       Compiling same-file v1.0.6
       Compiling serde v1.0.144
       Compiling opaque-debug v0.3.0
       Compiling parking_lot_core v0.8.5
       Compiling crc32fast v1.3.2
       Compiling core-foundation-sys v0.7.0
       Compiling unicode-width v0.1.9
       Compiling scopeguard v1.1.0
       Compiling adler v1.0.2
       Compiling bit-vec v0.6.3
       Compiling ppv-lite86 v0.2.16
       Compiling static_assertions v1.1.0
       Compiling cfg_aliases v0.1.1
       Compiling cpal v0.14.0
       Compiling ttf-parser v0.15.2
       Compiling hexf-parse v0.2.1
       Compiling serde_json v1.0.85
       Compiling profiling v1.0.6
       Compiling bytemuck v1.12.1
       Compiling crossbeam-utils v0.8.11
       Compiling itoa v1.0.3
       Compiling cpal v0.13.5
       Compiling ryu v1.0.11
       Compiling humantime v2.1.0
       Compiling tinyvec_macros v0.1.0
       Compiling arrayvec v0.7.2
       Compiling either v1.8.0
       Compiling paste v1.0.9
       Compiling cfg-if v0.1.10
       Compiling dispatch v0.2.0
       Compiling copyless v0.1.5
       Compiling audio-engine v0.4.1
       Compiling colors-transform v0.2.11
       Compiling winit v0.26.1
       Compiling fixedbitset v0.4.2
       Compiling hound v3.4.0
       Compiling rfd v0.10.0
       Compiling pollster v0.2.5
       Compiling colori v0.1.1
       Compiling pathdiff v0.2.1
       Compiling fs_extra v1.2.0
       Compiling zeno v0.2.2
       Compiling libloading v0.7.3
       Compiling instant v0.1.12
       Compiling wgpu-types v0.12.0
       Compiling generic-array v0.14.6
       Compiling ahash v0.7.6
       Compiling ahash v0.8.0
       Compiling foreign-types v0.3.2
       Compiling num-traits v0.2.15
       Compiling indexmap v1.9.1
       Compiling lock_api v0.4.8
       Compiling smartstring v1.0.1
       Compiling clang-sys v1.3.3
       Compiling fxhash v0.2.1
       Compiling ogg v0.8.0
       Compiling raw-window-handle v0.4.3
       Compiling raw-window-handle v0.5.0
       Compiling objc_exception v0.1.2
       Compiling walkdir v2.3.2
       Compiling codespan-reporting v0.11.1
       Compiling miniz_oxide v0.5.4
       Compiling wgpu-core v0.12.2
       Compiling bit-set v0.5.3
       Compiling regex v1.6.0
       Compiling safe_arch v0.5.2
       Compiling tinyvec v1.6.0
       Compiling itertools v0.10.3
       Compiling gcd v2.1.0
       Compiling open v3.0.2
       Compiling wide v0.6.5
       Compiling lewton v0.10.2
       Compiling malloc_buf v0.0.6
       Compiling getrandom v0.2.7
       Compiling core-foundation v0.9.3
       Compiling cpufeatures v0.2.5
       Compiling mach v0.3.2
       Compiling atty v0.2.14
       Compiling dirs-sys v0.3.7
       Compiling nom v7.1.1
       Compiling core-foundation v0.7.0
       Compiling aho-corasick v0.7.19
       Compiling flate2 v1.0.24
       Compiling rand_core v0.6.3
       Compiling crossbeam-channel v0.5.6
       Compiling core-graphics-types v0.1.1
       Compiling directories v4.0.1
       Compiling ultraviolet v0.8.1
       Compiling parking_lot v0.11.2
       Compiling core-graphics v0.19.2
       Compiling digest v0.9.0
       Compiling block-buffer v0.9.0
       Compiling integer-sqrt v0.1.5
       Compiling png v0.17.6
       Compiling rand_chacha v0.3.1
       Compiling hashbrown v0.11.2
       Compiling objc v0.2.7
       Compiling core-graphics v0.22.3
       Compiling cexpr v0.6.0
       Compiling sha2 v0.9.9
       Compiling rand v0.8.5
       Compiling metal v0.23.1
       Compiling objc_id v0.1.1
       Compiling cocoa-foundation v0.1.0
       Compiling core-video-sys v0.1.4
       Compiling fontdue v0.7.2
       Compiling env_logger v0.9.0
       Compiling rust-embed-utils v7.2.0
       Compiling objc-foundation v0.1.1
       Compiling cocoa v0.24.0
       Compiling wasm-bindgen-backend v0.2.83
       Compiling copypasta v0.8.1
       Compiling code_editor v0.2.2
       Compiling wasm-bindgen-macro-support v0.2.83
       Compiling winit_input_helper v0.12.0
       Compiling thiserror-impl v1.0.34
       Compiling wasm-bindgen-macro v0.2.83
       Compiling rust-embed-impl v6.2.0
       Compiling uuid-macro-internal v1.1.2
       Compiling rhai_codegen v1.4.2
       Compiling coreaudio-sys v0.2.10
       Compiling rust-embed v6.4.0
       Compiling core_embed_binaries v0.1.0 (/Users/jens/GitHub/Eldiron/core_embed_binaries)
       Compiling js-sys v0.3.59
       Compiling thiserror v1.0.34
    error: proc-macro derive panicked
     --> core_embed_binaries/src/lib.rs:4:10
      |
    4 | #[derive(RustEmbed)]
      |          ^^^^^^^^^
      |
      = help: message: #[derive(RustEmbed)] folder '/Users/jens/GitHub/Eldiron/core_embed_binaries/embedded/' does not exist. cwd: '/Users/jens/GitHub/Eldiron'
    
    error: could not compile `core_embed_binaries` due to previous error
    warning: build failed, waiting for other jobs to finish...`
    

    What was I expecting?

    That I can compile and run the Creator Module

    What I did exactly:

    • cloned/pulled the repo from Github on a MacBook pro running the Beta of macOS Ventura, rust installed
    • tried to start the process via console "cargo run --bin creator"
    opened by leugengroot 5
  • thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message:

    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', core_shared/src/asset/tileset.rs:72:67

    Hi,

    ran into another problem (if I'm bothering you with there minor issues, just let me know :-) )

    Jens

    ❯ cargo run --bin creator
       Compiling core_shared v0.1.0 (/Users/jens/GitHub/Eldiron/core_shared)
       Compiling core_server v0.1.0 (/Users/jens/GitHub/Eldiron/core_server)
       Compiling core_render v0.1.0 (/Users/jens/GitHub/Eldiron/core_render)
       Compiling creator v0.5.5 (/Users/jens/GitHub/Eldiron/creator)
        Finished dev [unoptimized + debuginfo] target(s) in 5.59s
         Running `target/debug/creator`
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', core_shared/src/asset/tileset.rs:72:67
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    opened by leugengroot 4
  • Update Readme.md

    Update Readme.md

    Hi, my name is Yiwen. I am a student working on an assignment that helps improve the ReadMe documents of open-source GitHub projects. In this Pull Request, I am proposing some improvements for your ReadMe.

    "cross platform"->"cross-platform" "on", "own" deleted for redundancy "kind"-> "kinds" "for" deleted "form"->"from" "non blocking"->"nonblocking"

    opened by yiwenwang2090 0
Releases(v0.7.0)
Owner
Markus Moenig
Creator of Open Source graphic applications and games using Rust, Swift and Metal. Enjoying life in Thailand.
Markus Moenig
Dwarf Fortress inspired frontend to Veloren, the multiplayer RPG voxel game written in Rust

velobracket ('veloren' + 'bracket-lib') velobracket is Dwarf Fortress inspired frontend to Veloren, the multiplayer RPG voxel game written in Rust. Us

Rodion Martynov 13 Dec 25, 2022
An opinionated, monolithic template for Bevy with cross-platform CI/CD, native + WASM launchers, and managed cross-platform deployment.

??️ Bevy Shell - Template An opinionated, monolithic template for Bevy with cross-platform CI/CD, native + WASM launchers, and managed cross-platform

Kurbos 218 Dec 30, 2022
Work-in-Progress NES / Famicon Image Editor & Map Creator

NESImg An extremely work-in-progress tool for making NES/Famicom-compatible images. When faced with the challenge of formatting artwork in a way that

Katharos Technology 10 Nov 24, 2022
RPG Dialog support for Bevy, written in pure Rust!

?? ?? Bevy x RPG Dialog ?? ?? RPG Dialog support for Bevy, written in pure Rust! bevy-rpg is a plugin crate that adds dialog functionalities to Bevy,

null 5 Jan 8, 2023
A safe, fast and cross-platform 2D component-based game framework written in rust

shura shura is a safe, fast and cross-platform 2D component-based game framework written in rust. shura helps you to manage big games with a component

Andri 28 Jan 17, 2023
Sci-fi run 'n' gun action RPG created in Rust, using Macroquad

Capstone - Twilight of the Archons This is an action/run 'n' gun RPG, created in Rust using macroquad. The future holds huge boss fights, and a mind-n

Ole A. Sjo Fasting 58 Dec 5, 2022
A basic RUST RPG created by arukovic.

Rust RPG! Hello this is a RUST RPG created by arukovic! This is just a simple RPG created by purely Rust... feel free to run it! Manually running 1st

SONIC-CODEZ 3 Jul 16, 2022
rpg-cli —your filesystem as a dungeon!

rpg-cli is a bare-bones JRPG-inspired terminal game written in Rust. It can work as an alternative to cd where you randomly encounter enemies as you change directories.

Facundo Olano 1.2k Jan 4, 2023
Engine / framework for creating highly customizable and user modable action RPG's

Rust RPG Toolkit PLEASE NOTE: this in early and very heavy development. API is subject to constant change, as it has newly transitioned from being a g

Ole A. Sjo Fasting 58 Dec 5, 2022
Rustification of the excellent GD Script Action RPG Tutorial by youtuber HeartBeast

Godot Action RPG w/Rust A GDNative implementation in Rust of youtuber HeartBeast 's great step-by-step turoial series creating a Godot Action RPG, usi

Nejat 14 Apr 14, 2022