LambdaHack: my party-based roguelike (engine) in Haskell

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Bandobras
    Knight
    • Apr 2007
    • 726

    LambdaHack: my party-based roguelike (engine) in Haskell

    Announcing LambdaHack, my party-based roguelike (engine) in Haskell and Allure of the Stars, the Sci-fi game. Released with Linux, OSX and Windows binaries, a version playable straight in the browser and source code. Follow the links for newest versions. Contributions welcome!

    Please see README.md for installation and configuration information and PLAYING.md for gameplay tips. This is an emergency release fixing a compilation problem with unsnoc due to updates in depende...



    Version v0.4.101.0, aka 'Officially fun' is out!
    Code:
    - the game is now officially fun to play
    - introduce unique boss monsters and unique artifact items
    - add animals that heal the player
    - let AI gang up, attempt stealth and react to player aggressiveness
    - spawn actors fast and close to the enemy
    - spawn actors less and less often on a given level, but with growing depth
    - prefer weapons with effects, if recharged
    - make the bracing melee bonus additive, not multiplicative
    - let explosions buffet actors around
    - make braced actors immune to translocation effects
    - use mouse for movement, actor selection, aiming
    - don't run straight with selected actors, but go-to cross-hair with them
    - speed up default frame rate, slow down projectiles visually
    - rework item manipulation UI
    - you can pick up many items at once and it costs only one turn
    - allow actors to apply and project from the shared stash
    - reverse messages shown in player diary
    - display actor organs and stats
    - split highscore tables wrt game modes
    - move score calculation formula to content
    - don't keep the default/example config file commented out; was misleading
    - I was naughty again and changed v0.5.0.0 of LambdaHack content API slightly one last time
    Last edited by Bandobras; May 3, 2019, 08:19.
  • Narvius
    Knight
    • Dec 2007
    • 589

    #2
    I will spend many days and nights reading the source.
    If you can convincingly pretend you're crazy, you probably are.

    Comment

    • Bandobras
      Knight
      • Apr 2007
      • 726

      #3
      Originally posted by Narvius
      I will spend many days and nights reading the source.
      Haha, well met, old buddy from UnAngband days. Please feel free to comment (e.g., here), ask questions and, of course, contribute (e.g., defining your own crazy game with the engine is a great start).

      Comment

      • Narvius
        Knight
        • Dec 2007
        • 589

        #4
        Alright, so I started delving into the source. The sample implementations for Client and Server really help, though one thing that I've been wondering about those: Your CliImplementation is a newtype wrapper around a small monad stack. Have you thought about making the client type in general be a monad transformer as well? Then you can just type alias one single monad transformer stack and have all the default MonadState functionality for free.

        I would code it up myself quick, but I don't yet feel comfortable enough with the codebase, and I don't know where you rely on MonadStateRead/MonadStateWrite.

        [Edit]
        Ah, upon closer inspection, the plethora of MonadClient* instances would make this a bit harder, since they need access to what's on the inside. Nevermind, then. :'D
        Last edited by Narvius; April 12, 2015, 12:16.
        If you can convincingly pretend you're crazy, you probably are.

        Comment

        • Bandobras
          Knight
          • Apr 2007
          • 726

          #5
          Originally posted by Narvius
          The sample implementations for Client and Server really help
          Yep. They are 'sample', but they should actually be enough for a lot of crazy games. I suppose one would extend the main engine code rather than add an extra state component to CliState and then transform the extra state in some external code. But the generality helped me ensure via types that engine doesn't depend on the concrete representation of the state data underneath. [Edit: and on the fact, that there's the IO monad underneath.]

          Your CliImplementation is a newtype wrapper around a small monad stack.
          Yep, and a very similar stack for SerImplementation.

          the plethora of MonadClient* instances
          Yep, I use those and the read-write and read-only monad a lot to ensure clients can't modify the main game State they share with the server, etc. (Actually, they can modify it, but only in the little bit of code (Atomic*) where they update the shared state based on messages sent by the server. Also, only restricted bits of the the state are shared based on what clients' actors can see, etc.) [Edit: I also use it to make sure only tiny bits of the client code can send/receive messages from the server, etc.]

          [Edit: this is described in https://github.com/LambdaHack/Lambda...r-architecture, though it may not be very accurate nor specific. It will also get abstracted a bit more when I let the client-server communication operate via net and so they will no longer reside in the same binary (and not in the same binary as the frontend thread either).]
          Last edited by Bandobras; April 12, 2015, 13:09.

          Comment

          • Bandobras
            Knight
            • Apr 2007
            • 726

            #6
            I've just released v0.4.101.1 of Allure of the Stars (a standalone game based on LambdaHack):

            Please see README.md for installation and configuration information and PLAYING.md for gameplay tips. This is an emergency release containing a partial workaround for a regression in the libsdl2 gr...


            and a slightly updated LambdaHack (the engine and the example game):

            Please see README.md for installation and configuration information and PLAYING.md for gameplay tips. This is an emergency release fixing a compilation problem with unsnoc due to updates in depende...


            The next version will be the grand v0.5, but the API is already frozen (won't succumb this time, promise).

            Have fun!

            Comment

            • Bandobras
              Knight
              • Apr 2007
              • 726

              #7
              Allure of the Stars, the Sci-Fi squad roguelike game, with source and binaries

              This is a major milestone release that will be maintained for some time. Please see README.md for installation and configuration information and PLAYING.md for gameplay tips. Changes let AI put ex...


              (screenshots: http://www.roguebasin.com/index.php?...e_of_the_Stars)

              and its free software engine in Haskell (with it's own little game)

              This is a major milestone release that will be maintained for some time. Please see README.md for installation and configuration information and PLAYING.md for gameplay tips. Additional binaries, i...


              (screenshots: http://www.roguebasin.com/index.php?title=LambdaHack)

              are out, ready for your tinkering, the API is frozen, the branch will be bugfixed and supported for some time.

              Enjoy!

              P.S. Windows and Linux binaries are included, but OSX binaries would be very much appreciated as well.

              Comment

              • gglibertine
                Adept
                • Dec 2007
                • 234

                #8
                When I first saw this thread, I thought, "What a great idea! You have to fight off handsy drunks and avoid ex-boyfriends, acquire drinks and hors d'oeuvres, and you win by taking home the biggest boss!"

                Imagine my disappointment.

                Comment

                • Bandobras
                  Knight
                  • Apr 2007
                  • 726

                  #9


                  It contains an open engine, ready to encode just what you describe.

                  Comment

                  • MadeOfBees
                    Scout
                    • Apr 2013
                    • 44

                    #10
                    I love haskell speak.

                    Now fork it to erlang too!

                    Comment

                    • Pete Mack
                      Prophet
                      • Apr 2007
                      • 6883

                      #11
                      Catching up after long hiatus. Ya know, I was thinking Haskell would be a good language for roguelikes. Kudos!

                      Comment

                      • Bandobras
                        Knight
                        • Apr 2007
                        • 726

                        #12
                        Originally posted by Pete Mack
                        Ya know, I was thinking Haskell would be a good language for roguelikes. Kudos!
                        It is. Light-weight but strictly checked types are great for modeling the dozens of kinds of interacting entities, where only some interactions make sense. It can even output Javascript --- there is a version on master branch that works in the browser. It's still quite slow and keybindings are problematic (only Chrome is known to work, but Firefox is passable with mouse or roguelike (vi) keys). But once I publish it, it should at least give people a way to quickly taste the gameplay. Also, it can be used on any platform that runs a browser (though some turns take looong on tiny machines).

                        Comment

                        • Bandobras
                          Knight
                          • Apr 2007
                          • 726

                          #13
                          v0.6.0.0 is out, this time can be tried out in the browser. Enjoy!

                          LambdaHack : a small dungeon crawler illustrating the roguelike game engine of the same name


                          near-future Sci-Fi roguelike and tactical squad combat game

                          Comment

                          • Bandobras
                            Knight
                            • Apr 2007
                            • 726

                            #14
                            0.6.1.0 is out. Enjoy!

                            Comment

                            • Bandobras
                              Knight
                              • Apr 2007
                              • 726

                              #15
                              v0.6.2.0 is out! Have fun and please offer your feedback on the roguetemple thread (or here, if you prefer): http://forums.roguetemple.com/index.php?topic=5454.0

                              Comment

                              Working...
                              😀
                              😂
                              🥰
                              😘
                              🤢
                              😎
                              😞
                              😡
                              👍
                              👎