Giter Site home page Giter Site logo

focused-generalist-mindset / build_a_mud_game_book Goto Github PK

View Code? Open in Web Editor NEW
86.0 13.0 4.0 5.95 MB

The purpose of this GitHub repository is to provide readers with a practical, hands-on guide to building a text-based Multi-User Dungeon (MUD) game titled "Beware of Dragons in the Dungeons" while learning about distributed systems and computer architecture concepts.

License: GNU Affero General Public License v3.0

book mud distributed-systems realtime

build_a_mud_game_book's Introduction

Build a distributed multi-user dungeon text adventure

Book Image

Repository overview

Explore the captivating world of 'Beware of Dragons,' a high-fantasy Multi-User Dungeon (MUD) text adventure game powered by Typescript and NodeJS. From crafting rich lore to mastering distributed systems, this open-source book guides aspiring game developers through the art of game design, storytelling, and technical implementation. Discover the secrets of character classes, allegiances, and dynamic combat while fostering player engagement through leaderboards and fair play. Immerse yourself in a realm of creativity where imagination knows no bounds. Join our community of contributors and embark on an epic journey through 'Beware of Dragons.

GitHub GitHub

Table of Contents

About the Book

"Beware of Dragons" is a comprehensive guide that takes you through the journey of creating an immersive multiplayer text adventure game using Typescript, NodeJS, and ReactJS. Whether you're a seasoned developer or just starting, this book provides valuable insights into game development, distributed systems, and best practices. In time, I hope it becomes a community-driven effort to provide a new learning resource to pick up Phoenix/LiveView and good practices in distributed systems.

Contents

The book is organized into chapters, each focusing on different aspects of game development, from lore creation to designing distributed systems. The book's contents are in the Table of Contents. As the book is currently very early in its development phase, don't be alarmed if the table of contents were to change (new additions, removing chapters/sections, modifying the structure, and such).

Contributing

We welcome contributions from the community to make this resource even more valuable. If you'd like to contribute to the book by adding new content, fixing errors, or suggesting improvements, please follow these steps:

  1. Fork this repository to your GitHub account.
  2. Create a new branch for your contribution (git checkout -b your-feature).
  3. Make your changes and commit them (git commit -m "Added new chapter on XYZ").
  4. Push your changes to your forked repository (git push origin your-feature).
  5. Open a Pull Request (PR) from your forked repository to this main repository.
  6. Our team will review your PR, provide feedback, and merge it if everything looks good.

For more details on contributing, please see our Contributing Guidelines.

Feedback and Issues

We value your feedback and encourage you to report any issues or suggest improvements. If you encounter a problem with the book content code examples or have a general suggestion, please open an issue.

License

This book is released under the MIT License, a permissive open-source license that encourages collaboration and innovation. Under this license, you are free to:

  • Use this book for personal or commercial purposes.
  • Modify and adapt the content to suit your needs.
  • Share and distribute the book in any format.
  • Incorporate portions of the book into your projects.

The only requirement is that you provide proper attribution to the original work and acknowledge the contributions of the authors and contributors.

I believe in fostering a community of creativity and collaboration. Feel free to embark on adventures inspired by "Beware of Dragons" and share your knowledge with the world.

Happy reading, and may your journey through the "Beware of Dragons" world be filled with creativity, adventure, and boundless imagination!

build_a_mud_game_book's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

build_a_mud_game_book's Issues

Why this book

This is the first page where readers would typically land. The README generally does a great job introducing the book, but some readers might land directly on that page. Even if you read the ReadMe docs, the role of this section is to go over why this is a fascinating endeavor and why we should follow the story to build the game.

Establish the general software architecture for the game

Description

This issue outlines the software architecture for the Beware of Dragons game, covering both the system design and low-level design aspects. Additionally, it will address the monitoring requirements necessary to ensure the system's stability and performance.

System Design

The system design encompasses the overall structure and components of the game architecture. We'll want to see:

  • A high-level illustration representing how the system should behave and handle the game mechanics and features
  • A deep dive into the services powering up the system
  • The data storage strategy that can serve the needs of the system
  • The API protocol(s) that the system plan to use and why
  • The expected number of active users vs. scalability concerns for the system's use

Low-Level Design for game mechanics

The low-level design focuses on the implementation details of core game mechanics, including:

  • Room Management and Map Navigation: Defining the data structures and algorithms for managing rooms and player movement within the game world.
  • Combat System: Designing the combat mechanics, including player actions, enemy behaviors, and damage calculation algorithms.
  • Inventory and Player Management: Developing systems for managing player inventory, character progression, and skill trees.
  • Command Parsing and Interaction: Implementing logic for parsing player commands, interpreting actions, and interacting with NPCs and merchants.

Monitoring & Observability

To ensure the stability and performance of the game system, the following monitoring practices will be implemented:

  • Metrics Collection: Establish the metrics used on Prometheus to collect information on the system resources, API endpoints, and player interactions.
  • Alerting: Establish with Grafana the list of alerts that will notify you of any anomalies or performance degradation.
  • Tracing: Set up examples of how we'd expect to use a tool like OpenTelemetry to track requests across microservices and identify bottlenecks.

Game mechanics for Beware of Dragons

As we delve into the development of Beware of Dragons, it's crucial to define and implement core game mechanics that will shape the player experience and gameplay dynamics. The following mechanics have been identified as essential components of the game:

1. World Building:

  • Purpose: Establishes the immersive world of Echovale and enables players to explore and interact with various environments.
  • Functionality: This includes managing rooms, map navigation, handling shards for currency, implementing command autocomplete and autosuggestions, and integrating Pyres as respawn points.
  • Contribution: Enhances player immersion, facilitates exploration, and provides a framework for storytelling and questing.

2. Inventory Management:

  • Purpose: Allows players to collect, equip, and manage items essential for their journey.
  • Functionality: Covers equipment management, artifact acquisition and utilization, and elixir inventory.
  • Contribution: Adds depth to character progression, customization, and strategic decision-making, enhancing the overall gameplay experience.

3. Combat System:

  • Purpose: Provides engaging and dynamic combat encounters for players to test their skills and tactics.
    Functionality:** It incorporates various combat mechanics, including attack, defense, special abilities, and status effects.
    Contribution:** It offers challenging gameplay scenarios, fosters player skill development, and rewards strategic decision-making in battles.

4. Leveling and Progression:

  • Purpose: Enables character growth and advancement throughout the game.
  • Functionality: Includes experience accumulation, leveling up, skill acquisition, and talent progression.
  • Contribution: Encourages player investment and long-term engagement, providing a sense of achievement and empowerment as characters evolve.

5. Multiplayer Features:

  • Purpose: Enhances social interaction and cooperative gameplay experiences.
  • Functionality: Includes proximity chat for real-time communication between players, safe zones, and PvP experiences.
  • Contribution: Fosters a sense of community, collaboration, and camaraderie among players, enriching the overall gaming experience.

Expectations

As the core mechanics and game features are being designed, we can expect to find the following for each feature:

  • Detailed specifications outlining the functionality
  • Design considerations to ensure integration with existing systems and overall game coherence
  • Acceptance criteria for validating feature completeness
  • UI mockups illustrating the layout of the feature within the game interface

Establishing the guiding principles for the product design

As we continue to shape the vision for Beware of Dragons, it's essential to establish clear guiding principles that will inform the development of all features and mechanics. These guiding principles are the foundation for creating an engaging gaming experience that resonates with players. The following principles have been identified as fundamental to the core identity of the game:

  1. Immersive Player Experience: Every aspect of the game, from storytelling to gameplay mechanics, should contribute to creating a deeply immersive experience that resonates with players.
  2. Intuitive Gameplay: We aim to design gameplay mechanics that are intuitive and easy to grasp, allowing players to quickly understand how to interact with the game world and navigate its challenges. By prioritizing simplicity and clarity in our design decisions, we can ensure that players can focus on enjoying the game rather than struggling with complex mechanics or controls.
  3. Guided Learning Curve: Beware of Dragons should provide players with a guided learning curve that gradually introduces them to the game's mechanics, systems, and lore. We want to strike a balance between accessibility for newcomers and depth for experienced players, offering tutorials, tooltips, and hints to help players learn and master the game at their own pace.
  4. Balanced Reward and Challenge Experience: Central to the enjoyment of Beware of Dragons is the sense of accomplishment and progression that players feel as they overcome challenges and achieve milestones within the game. We aim to provide a balanced experience that rewards players for their efforts while maintaining an appropriate level of challenge to keep gameplay engaging and fulfilling.

Chapter 1: The vision

This chapter is about what is in store for the development of 'Beware of Dragons.' This will be one of the less technically-versed chapters as we discuss what we're trying to accomplish.

As such, these are things that you can expect to find in the first chapter:

  • defining the educational issues behind the book
  • going over the narrative, bringing the player all the way to their first mini-boss
  • outlining the book's structure and flow
  • putting together the target audience and reader persona for the book

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.