GithubHelp home page GithubHelp logo

badlydrawrogue's Introduction

BadlyDrawRogue

Roguelike Engine Using the functional side of C# https://wozsoftware.wordpress.com/

The name Badly Drawn Rogue comes from the fact that I am no artist so the graphics for the game will be hand drawn… badly.

I have always loved roguelikes and have dabbled with engines in the past, each time exploring different techniques of implementation. Over the past couple of years I have become a real fan of functional programming and immutability so I decided it was time to revisit a roguelike engine using these techniques. The aim is to create a simple game backed by a very flexible engine that will allow creation of far more complex games down the line.

I have not yet chosen the render techniques I will use. The main application is currently an old WinForms project but as the engine lives in a separate project this will be switched out when I decide on the UI.

The following is a quick overview of the core concepts

  • The object Entity is used to represent most items in the game: tiles, items, actors etc.
  • Entity is an immutable object composed of a type, numeric attributes, boolean flags and child entities. This structure gives great flexibility to define objects without the need for complex object graphs.
  • My immutable objects are closer in concept to F# records than OO objects, most of the functionality is via queries and helper methods.
  • Heavy use is made of linq and monadic comprehension, because of this you will find very few loops in the code.
  • The Maybe monad is provided by the Functional.Maybe library.
  • Error comprehension is provided by my own Error monad.
  • Immutable collections are provided by the Microsoft.Bcl.Collections library.

Until now I have been feeling out the core concepts of the engine and I wanted the flexibility of clay like code. This has meant the code is sparse on UnitTest as they add drag. Now I have passed this stage I will start to rectify the test situation before I push on too much further.

badlydrawrogue's People

Contributors

wozsoftware avatar

Stargazers

Joohun, Maeng avatar Allan Savolainen avatar 노성호 avatar Theo avatar  avatar justin barton avatar

Watchers

James Cloos avatar Theo avatar  avatar 노성호 avatar

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.