All Projects → jasonstolaruk → Currymud

jasonstolaruk / Currymud

Licence: other
A Multi-User Dungeon server in Haskell.

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to Currymud

Reldens
Reldens - You can make it - Open Source MMORPG Platform
Stars: ✭ 130 (+140.74%)
Mutual labels:  game, game-development, game-dev
3 Modifiers And Abilities
Customise character abilities, weapons, characters and enemies. This includes multiple damage types, modifiers, sounds, animations. By the end you can create your core combat experience. (REF MA_RPG) http://gdev.tv/rpggithub
Stars: ✭ 64 (+18.52%)
Mutual labels:  game, game-development, game-dev
Number Wizard Ui Original
Introducing basic User Interface in the Complete Unity C# Developer 2D course (http://gdev.tv/cudgithub)
Stars: ✭ 18 (-66.67%)
Mutual labels:  game, game-development, game-dev
1 Character Movement
The first section of the course. You will learn everything required to build a simple movement system in your RPG, creating the core experience. http://gdev.tv/rpggithub
Stars: ✭ 81 (+50%)
Mutual labels:  game, game-development, game-dev
Unity Solutions
Use Firebase tools to incorporate common features into your games!
Stars: ✭ 95 (+75.93%)
Mutual labels:  game, game-development, game-dev
Langaw
A sample project for following along a tutorial found on jap.alekhin.io.
Stars: ✭ 90 (+66.67%)
Mutual labels:  game, game-development, game-dev
09 Zombierunner Original
First person shooter with Unity terrain and AI pathfinding (http://gdev.tv/cudgithub)
Stars: ✭ 64 (+18.52%)
Mutual labels:  game, game-development, game-dev
Gamedev Resources
🎮 🎲 A wonderful list of Game Development resources.
Stars: ✭ 2,054 (+3703.7%)
Mutual labels:  game, game-development, game-dev
Minigolf
A minigolf game written without a game engine in C
Stars: ✭ 282 (+422.22%)
Mutual labels:  game, game-development, game-dev
Etherboy Core
Etherboy Game Smart Contract for Loom DAppChain
Stars: ✭ 12 (-77.78%)
Mutual labels:  game, game-development
Lantern
(DEPRECATED, SEE README)
Stars: ✭ 12 (-77.78%)
Mutual labels:  game, game-development
Dodgem
A Simple Multiplayer Game, built with Mage Game Engine.
Stars: ✭ 12 (-77.78%)
Mutual labels:  game, game-development
Godot Open Rpg
Learn to create turn-based combat with this Open Source RPG demo ⚔
Stars: ✭ 855 (+1483.33%)
Mutual labels:  game, game-development
Hcwiid
Haskell binding for CWiid (wiimote)
Stars: ✭ 7 (-87.04%)
Mutual labels:  game, game-development
Quavo
An open source OSRS emulation server aimed to be fast and informative.
Stars: ✭ 12 (-77.78%)
Mutual labels:  game, game-development
Beaverandfairies
Stars: ✭ 14 (-74.07%)
Mutual labels:  game, game-development
Session Seven
Free oldschool point & click graphic adventure game
Stars: ✭ 20 (-62.96%)
Mutual labels:  game, game-development
Networked Aframe
A web framework for building multi-user virtual reality experiences.
Stars: ✭ 803 (+1387.04%)
Mutual labels:  game, game-development
Java Game And Application
Java Games and Application with awesome source code and better algorithm
Stars: ✭ 14 (-74.07%)
Mutual labels:  game, game-development
Factory Rise
Factory Rise is a 2D sandbox game, focused on building, developing industries and handling resources. The game is based on Oxygen Not Included, Terraria, Factorio and some Minecraft mods (EnderIO, Industrial Craft, BuildCraft, GregTech and Thermal Expansion), it also have a game progress similar to StarBound.
Stars: ✭ 21 (-61.11%)
Mutual labels:  game, game-development

CurryMUD

A Multi-User Dungeon ("MUD") server in Haskell. (If you are unfamiliar with the term "MUD," please refer to this Wikipedia article.)

CurryMUD is the hobby project and brainchild of a single developer. It's been in active development for 4 years, but is still very much a work in progress.

My goals

My aim is to create a unique, playable MUD. I am writing this MUD entirely in Haskell, from scratch.

Creating a framework which others can leverage to develop their own MUDs is not an explicit goal of mine, nor is this a collaborative effort (I am not accepting PRs). Having said that, the code is available here on GitHub, so other parties are free to examine the code and develop their own forks. Please refer to the license, which is a 3-clause BSD license with additional unique clauses regarding the creation of derivative MUDs.

CurryMUD will have the following features:

  • Players will be offered an immersive virtual world environment.
  • Content will be created and development will proceed with the aim of supporting a small community of players.
  • Role-playing will be strictly enforced.
  • Classless/skill-based.
  • Permadeath (when player characters die, they really die).
  • Some degree of player-created content will be allowed and encouraged.
  • The state of the virtual world will be highly persisted upon server shutdown.
  • As is common with most MUDs, client connections will be supported with a loose implementation of the telnet protocol.
  • CurryMUD will always be free to play. No pay-to-win.

What I have so far

  • About 95 player commands, 60 administrator commands, and 65 commands for debugging purposes. 🔢
  • About 220 built-in emotes. 👏
  • Help files for all existing non-debug commands. Help topics. 💁
  • Commands have a consistent structure and a unique syntax for indicating target locations and quantities. 🎯
  • Unique commands, accessible only when a player is in a particular room, may be created. 🏡
  • Nearly everything may be abbreviated. 🔤
  • Logging. 📜
  • ANSI color. 🔴
  • Character creation with optional readymade templates. 🏃
  • The virtual world is automatically persisted at regular intervals and at shutdown. 💾
  • Commands for reporting bugs and typos. 🐛
  • Commands to aid in the process of resetting a forgotten password. 🛂
  • NPCs can execute commands, either from within code or via the ":as" administrator command. 🎭
  • PCs can introduce themselves to each other. 🙇
  • PCs can "link" with each other so as to enable "tells." 🔗
  • Question channel for OOC newbie Q&A. ❓
  • Players can create their own ad-hoc channels. 👥
  • Free-form emotes and built-in emotes may be used in "tells" and channel communications. 👏
  • Functionality enabling one-on-one communication between players and administrators. 💬
  • Weight and encumbrance. 📉
  • Volume and container capacity. 🎒
  • Vessels containing liquids. Vessels may be filled and emptied. 🍷
  • Light and darkness. 🌞
  • Light sources (torches and oil lamps) that may be lit and extinguished. Lamps may be refueled. 🏮
  • Players can interact with permanent room fixtures that are not listed in a room's inventory. ⛲️
  • Objects can be configured to automatically disappear when left on the ground for some time. 💥
  • Smell and taste. Listen. 👃👅👂
  • Eating and drinking. Digestion. 🍞🍺
  • Durational effects that can be paused and resumed. Corresponding feelings. 💫
  • PC and NPC death. Corpse decomposition. 💀
  • Corpses may be sacrificed using the holy symbol of a particular god. 🙏
  • Upon death, PCs may have a limited amount of time to exist in the virtual world as spirits. 👼
  • Maps of the game world. 🌎
  • A history of the game world. 📚
  • Gods. An origin myth describing the creation of the universe.
  • An in-game calendar. 📆
  • Server settings are specified in a YAML file. 🔕
  • Sending GMCP Char.Vitals and Info.Room. 📡
  • Mudlet scripts for vitals gauges and mapping. 📜
  • A cheatsheet PDF. 📝

I am still in the initial stage of developing basic commands. There is very little content in the virtual world.

About the code

The code is available here on GitHub under this license (a 3-clause BSD license with additional unique clauses regarding the creation of derivative MUDs.) Please note that I am not accepting PRs.

  • About 42,000 lines of code/text.
  • About 120 modules, excluding tests.
  • About 105 unit and property tests (I'm using the tasty testing framework).
  • A ReaderT monad transformer stack with the entire world state inside a single IORef.
  • STM-based concurrency.
  • Using aeson (with conduit) and sqlite-simple for persistence.
  • Heavy use of the lens library.
  • Heavy use of GHC extensions, including:
    • DuplicateRecordFields
    • LambdaCase
    • MonadComprehensions
    • MultiWayIf
    • NamedFieldPuns
    • ParallelListComp
    • PatternSynonyms
    • RebindableSyntax
    • RecordWildCards
    • TupleSections
    • TypeApplications
    • ViewPatterns
  • Many functions are decorated with the HasCallStack constraint. I hope to remove these when I'm convinced that the code is stable.

How to try it out

Linux and macOS are supported. Sorry, but Windows is not supported.

Please build with stack:

  1. Install the pcre library if necessary. (On macOS, brew install pcre should be sufficient.)
  2. Install stack.
  3. Clone the repo from your home directory (the server expects to find various folders under $HOME/CurryMUD).
  4. Inside $HOME/CurryMUD, run stack setup to get GHC 8 on your machine. (The stack.yaml file points to a recent resolver using GHC 8.)
  5. Run stack build to compile the curry binary and libraries.
  6. Run stack install to copy the curry binary to $HOME/.local/bin.
  7. Execute the curry binary.
  8. Telnet to localhost port 9696 to play. (Better yet, use a MUD client.)

How to contact me

Feel free to email me at the address associated with my GitHub account if you have any questions.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].