Pyrel dev log, part 2

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Magnate
    Angband Devteam member
    • May 2007
    • 5110

    #16
    Originally posted by Derakon
    In the meantime, I had an idea for tweaking how Hallucination works. Right now it'd just be a display layer hack, where each tile would have a small random chance of being replaced by a random tile.
    Why a hack? Why not build in the capability for the displayed tile to be different to the "real" tile? This way you take care of mimics by the same mechanism, as long as you can have both fixed and random display tiles. (Admittedly this doesn't provide your feature of additional hallucinatory monsters, which is neat - I'm just quibbling about hack vs. design.)
    "Been away so long I hardly knew the place, gee it's good to be back home" - The Beatles

    Comment

    • fizzix
      Prophet
      • Aug 2009
      • 3025

      #17
      Originally posted by Magnate
      Why a hack? Why not build in the capability for the displayed tile to be different to the "real" tile? This way you take care of mimics by the same mechanism, as long as you can have both fixed and random display tiles. (Admittedly this doesn't provide your feature of additional hallucinatory monsters, which is neat - I'm just quibbling about hack vs. design.)
      And the open door across dungeon "telepathy" bug.

      Comment

      • Derakon
        Prophet
        • Dec 2009
        • 9022

        #18
        That's more an issue of handling player knowledge -- mimics need some kind of "appear to be something else" ability. At first glance I'd probably do that as "actually create the item they're pretending to be, and make the monster absolutely undetectable; then destroy the item and unhide the monster when the player moves onto the space, or the monster gets damaged. As for the doors problem, that's a matter of the game tracking what a tile appeared as when the player last "saw" (detected, etc.) it. Angband doesn't do this, but it could.

        The reason I said hallucination as currently in Angband would be a display hack is because that's honestly the simplest and most elegant way to do it. Probably it'd be implemented as "create a hallucinator function; pass it the tiles in LOS and a function; it chooses some of those tiles and calls the function to randomize them."

        Comment

        • Derakon
          Prophet
          • Dec 2009
          • 9022

          #19
          Okay, the Prompt rewrite is done. This turned out to be a bigger hassle than I'd anticipated, but as a pleasant side-benefit, the UI (that is, input to the program, and output to the screen/speakers/etc.) is now basically completely decoupled from the game engine. So if someone wants to make a Qt front-end, or make the game run on Android or whatever, all they have to do is make a new UI layer (the wxWidgets-based one is 418 lines long at the moment), and change one line early in program execution from "gui.setUIMode(gui.WX)" to "gui.setUIMode(gui.ANDROID)", etc.

          Also, I wrote a basic Look command, which was the thing that got this all started in the first place.



          It doesn't jump to the closest interesting tile yet, and it doesn't let you actually target a tile/creature, but at least you can look at things!

          Oh, and monsters are killable now, which means that you can actually extinct unique "races", preventing them from being generated ever again. So I suppose the game is technically winnable, if you feel like wandering down ~100 dungeon levels to find Morgoth and then poking him to death with whatever the best-dice weapon you can find is, one blow at a time, while he wanders at complete random. Not that the game will recognize your accomplishment...

          Comment

          • Nick
            Vanilla maintainer
            • Apr 2007
            • 9638

            #20
            Originally posted by Derakon
            Oh, and monsters are killable now, which means that you can actually extinct unique "races", preventing them from being generated ever again. So I suppose the game is technically winnable, if you feel like wandering down ~100 dungeon levels to find Morgoth and then poking him to death with whatever the best-dice weapon you can find is, one blow at a time, while he wanders at complete random. Not that the game will recognize your accomplishment...
            Pretty much ready for a comp, then.
            One for the Dark Lord on his dark throne
            In the Land of Mordor where the Shadows lie.

            Comment

            • Magnate
              Angband Devteam member
              • May 2007
              • 5110

              #21
              Originally posted by Nick
              Pretty much ready for a comp, then.
              Needs more leather boots.
              "Been away so long I hardly knew the place, gee it's good to be back home" - The Beatles

              Comment

              • buzzkill
                Prophet
                • May 2008
                • 2939

                #22
                Originally posted by Magnate
                Needs more leather boots.
                = needs more cow hide.
                www.mediafire.com/buzzkill - Get your 32x32 tiles here. UT32 now compatible Ironband and Quickband 9/6/2012.
                My banding life on Buzzkill's ladder.

                Comment

                • ekolis
                  Knight
                  • Apr 2007
                  • 921

                  #23
                  The cowboy of the night ascends!
                  You read the scroll labeled NOBIMUS UPSCOTI...
                  You are surrounded by a stasis field!
                  The tengu tries to teleport, but fails!

                  Comment

                  • Derakon
                    Prophet
                    • Dec 2009
                    • 9022

                    #24
                    It bugged me that it was taking about .1 seconds to draw an 80x24 map, so I optimized that a bit. The game now only redraws the parts of the map that have been changed since the last update, which gives over an order of magnitude improvement in drawing times.

                    Practically speaking, if I was really worried about drawing performance, I'd switch to OpenGL-based rendering. The only reasons I haven't done this, in fact, are that 1) OpenGL is inherently confusing, and I'd rather not force other developers to deal with it, and 2) it'd introduce more external dependencies, so all future developers would have to install PyOpenGL, PyFTGL, and numpy (off the top of my head) even if they didn't care about the rendering code.

                    I'm confident that one of these days someone else will check out the code and maybe submit a patch.

                    Comment

                    • Derakon
                      Prophet
                      • Dec 2009
                      • 9022

                      #25
                      Okay, what do I work on next? Any suggestions?

                      Comment

                      • ekolis
                        Knight
                        • Apr 2007
                        • 921

                        #26
                        All right, I'll give it a go
                        You read the scroll labeled NOBIMUS UPSCOTI...
                        You are surrounded by a stasis field!
                        The tengu tries to teleport, but fails!

                        Comment

                        • ekolis
                          Knight
                          • Apr 2007
                          • 921

                          #27
                          By the way, what does the "e" in the name stand for? I'd expect it to be PyRL for Python Roguelike...
                          You read the scroll labeled NOBIMUS UPSCOTI...
                          You are surrounded by a stasis field!
                          The tengu tries to teleport, but fails!

                          Comment

                          • Derakon
                            Prophet
                            • Dec 2009
                            • 9022

                            #28
                            It stands for "extra vowel I tossed into the name to make it not look like 'Perl'".

                            Comment

                            • ekolis
                              Knight
                              • Apr 2007
                              • 921

                              #29
                              Hmm, I'm getting this error when I run it:

                              Traceback (most recent call last):
                              File "C:\Users\Ed\Documents\pyrel\pyrel.py", line 4, in <module>
                              gui.setUIMode(gui.WX)
                              File "C:\Users\Ed\Documents\pyrel\gui\__init__.py", line 39, in setUIMode
                              import wxPyrel.prompt
                              File "C:\Users\Ed\Documents\pyrel\gui\wxPyrel\prompt.py ", line 2, in <module>
                              import keymap
                              File "C:\Users\Ed\Documents\pyrel\gui\wxPyrel\keymap.py ", line 11, in <module>

                              wx.WXK_NUMPAD1: MOVE_1,
                              AttributeError: 'module' object has no attribute 'WXK_NUMPAD1'

                              Did I install the wrong version of wx or of python? I have python 2.7 and wx 1.0.0, I think...
                              You read the scroll labeled NOBIMUS UPSCOTI...
                              You are surrounded by a stasis field!
                              The tengu tries to teleport, but fails!

                              Comment

                              • Derakon
                                Prophet
                                • Dec 2009
                                • 9022

                                #30
                                1.0.0? That's way too old. Get the latest stable version off of wxpython.org. Or for Mac users, get the latest Cocoa development build (currently this one).

                                I think, though I'm not certain, that these need to be installed against the python.org Python, not the system Python provided by Apple. Generally it's recommended that you leave the system Python be, anyway.

                                In other words, installation instructions:
                                * Download Python2.7 from python.org; run the installer
                                * Download the latest version of wxPython (or the latest unstable Cocoa version, for Mac users); run the installer
                                * Download Pyrel; do "python2.7 pyrel.py"

                                Comment

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