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.)
Pyrel dev log, part 2
Collapse
X
-
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.)Comment
-
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
-
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
-
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...One for the Dark Lord on his dark throne
In the Land of Mordor where the Shadows lie.Comment
-
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
-
You read the scroll labeled NOBIMUS UPSCOTI...
You are surrounded by a stasis field!
The tengu tries to teleport, but fails!Comment
-
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
-
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
-
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
Comment