Posts for Derakon


Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Of course, the old run isn't going to be removed from the site; it (and its encode) will still be reachable by seeing which movie this movie obsoleted. Not that I'm taking a stance on this either way. I don't feel strongly.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Sturgeon's Law: 90% of everything is crud. As it was, so it is now, and will be. We don't remember the cruddy games of yesterday because, being cruddy, they weren't memorable. And I challenge that the NES had a worse SNR than the Wii.
VirtualAlex wrote:
Let me narrow down what I am looking for. See it all makes perfect sense in my mind, but trying to verbalize the dividing line is very hard.
You're gonna have to work on this if you want to write articles for others to read. :)
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
How is a rate of fire, where after shooting you have to wait a set time before you can shoot again, materially different from a cooldown, where after using an ability you have to wait some time before you can use the ability again? I think you're just griping about being charged health to use something, but that's a standard idea that's been around for ages both in and out of arcades. You keep adjusting your definition so it can be about what you want to talk about. Talk about what you like, and damn the definitions. Just don't try to twist words so they mean what they don't. Incidentally, you aren't using your specials properly. In the SoR series anyway, using the special costs less than taking a full combo in the face, so you should use them whenever you're about to get hit. They cost health so you don't spam them, but they have great tactical use even without the cooldowns. This increases fun, because now I have to weigh the risks of using the special -- am I about to be hit by that enemy? Should I take that risk, or play it safe and use the special, but pay a known cost? And as I noted earlier, paying in health is occasionally preferable to being forced to wait for the skill to recharge; there are some high-risk strategies that require skill spamming. Is the player not to be allowed that option?
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Typically in D2 by the midgame mana costs are not significant for most spells; DPS becomes the main issue and cooldowns play a significant factor. IIRC cooldowns are specified in the skill description along with mana cost and damage; certainly after a brief period of using the skill the player will intuitively know how long the cooldown lasts. You could easily describe a shotgun in a similar fashion, by calling the amount of time it takes to reload the gun the cooldown time.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Diablo 2 does have ability cooldowns on some abilities -- you can't spam Firewall at your max casting speed, for example. I don't think D1 does though. Your definition of cooldown is flawed. Cooldowns are simply timers that, until they expire, prevent an ability from being used (or make it more expensive, etc.). You can associate any other cost with using the ability that you like. In D2 there is a mana cost; in SoR3 there is a health cost. Try going to a D2 forum and telling everyone there that there are no cooldowns in the game; you'll get laughed out of town. You're going to need to make very certain you know what you're talking about if you plan to write anything approaching an authoritative work. If you want to talk about "abilities that have cooldowns but no other cost" then you'll have to specify that. Warp: IMO it would, especially for single-shot weapons.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Selectable characters have been in since the early RPG days. NetHack and Moria both had character classes with differing strengths and weaknesses. In turn those both inherited indirectly from tabletop games -- and if you ignore the influence that tabletop games had on videogames then you're seriously making a mistake.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
As noted, Streets of Rage 3 had a bar that slowly filled which, when full, would allow you to use your special at no cost of health. That counts as notification of a cooldown completing in my book. I'm sure there are earlier examples too. Heck, if you wanted to be pedantic, recovery animations count as cooldowns before you can do things; for example, when the prince in Prince of Persia is in his landing animation, he cannot jump again until it completes. That counts as a cooldown for the jumping ability; it's just handled very organically instead of having a bar to fill or an icon turning red. (Super Mario Galaxy and LoZ Twilight Princess do similar things with animations indicating when cooldowns are complete -- after using a spin attack the lumia spins under Mario's hat in SMG, and a spark travels along Link's sword in LoZTP. These are obviously more recent examples though)
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
System Error wrote:
A little too many Nintendo-related things for my liking. IMO, if we're going to go complex, we may as well go the extra mile and be willing to draw anything. I mean shit man, you didn't even draw Sonic.
The entire point was to draw stuff just from Nintendo's first-party games. Or was that a *whoosh* moment? Yes vote.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
VirtualAlex wrote:
No I guess not... but it would certainly make it easier for me to have an opinion on it if I actually was alive before it's existence.
You're going to get tons of complaints from crotchety gamers along these lines if you ignore everything from before you were born. Do the job properly; do the research.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Charging health for special abilities is actually a fairly standard feature of beat-em-ups in general. It introduces some choice in using them. If you just have a standard cooldown, then you basically use the ability as soon as the cooldown expires for some free damage; if you have to pay health, then you only use the ability when you really need it (i.e. when not using it would mean taking even more damage from enemy attacks). Streets of Rage 3 combined the two approaches: you have a special bar that slowly fills. When you use the special bar, it empties and you take damage based on how full it was -- completely full and you took no damage. Streets of Rage 2 just charged you health when you used the ability straight up. In either case you could spam specials until running out of health if you really felt like it. Skilled players could then take down some bosses shockingly quickly (especially with Max vs. blocking enemies, though that's arguably a glitch), but it's risky play since you run dangerously low on health to do so.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Procedural content (going aaaalll the way back to Elite, if not earlier) Powerups Modding By the way, you should probably clarify that innovations aren't always (or even often) well-implemented. Morality systems, for example. Or quicktime events.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Ehh, I don't think the rules need to be proofed against this, honestly. An improvement that consisted solely of truncating input that loses game time in exchange for a shorter input file wouldn't be published anyway. The community would see to that.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Encodes are always welcome. :)
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
The classic standby is "VOTE YES"
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
It's been almost a year since he last updated this thread. I'd say go for it.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Of course, there's also the formula which allows you to calculate any Fibonacci number very quickly by abusing the series' relationship with the golden ratio. No recursion needed; just N*3 multiplications and some basic arithmetic (and the square root of 5, but that can be precalculated). I suppose you might start to run into trouble with floating point precision after awhile though.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Gotta say, this was pretty slow, even for a four-minute movie. It'd help if it weren't possible to get the stairs so close to each level's entrance, so you'd see even slightly more of the dungeon. As it is, it's just "go right, go down stairs" and "go straight, go down stairs" until near the end. Voting meh for game choice.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
That's what I meant by "a huge hack" for runtime work. In Python you'd probably do that by importing the module the function is in and then assigning to the module's namespace -- move the original function to an unused name and put your memoized version where it used to be. For a compiled language this gets trickier; in C/C++ you'd have to modify the call table, and I don't know how you'd go about doing that. Assuredly it's possible, but you'd need to know exactly what you're doing to avoid trampling over important parts of RAM and causing a segfault or bus error.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
To my knowledge, you can't do that kind of thing without interfering with either the definition of the function you're wrapping, or with how the language invokes functions -- either way, you're looking at a huge hack if you want to do this at runtime. Python has decorators which can do what you want fairly cleanly, but they require modifying the wrapped function to indicate that it is wrapped. They'd look something like this (untested):
# Maps functions to arguments to results of calling functions with those arguments
previousResults = {}

def memoize(function):
    # Establish an entry in our memo map for this function.
    global previousResults
    if function not in previousResults:
        previousResults[function] = {}

    def wrappedFunc(*args):
        # Check if we've tried this before.
        key = tuple(args)
        if key in previousResults[function]:
            return previousResults[function][key]
        value = function(*args)
        previousResults[function][key] = value
        return value

    return wrappedFunc

@memoize
def fib(n):
    if n == 0:
        return 0
    if n <= 2:
        return 1
    return fib(n - 1) + fib(n - 2)
Thus, you can't at runtime say "Hang on, I want to decorate this function so it's memoized"; however, you can easily memoize any function by making a one-line change to it. EDIT: more generally, you can do this kind of thing in any language that supports functions as first-class objects. Putting "@memoize" before the definition of fib() is just syntactic sugar for saying "def tmp(n): ...; fib = memoize(tmp)".
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Looked good to me. I don't suppose a camhack encode that keeps the marble onscreen would be possible?
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
How would you kill enemies when you have magnet beam equipped?
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Hey, yeah, I think that's it! Thanks!
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Get out of my way! *massive damage boost* Looking good, though what was up with the pauses and indecision in the last shopping session?
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
Mister Epic wrote:
Derakon wrote:
Comparison videos get painful to listen to if the sound gets badly out of sync. That only happened once in this run, fortunately. If you make a comparison video for a run where the music doesn't reset as often or where the improvements are more frequent and/or drastic, you might want to consider only pulling sound from one of the movies.
I'm thinking of pulling the sound of each movie on each stereo channel next time.
Ehh, while that sounds neat in practice it doesn't make much difference, at least for me. I'm still listening to two separate audio tracks overlaid on each other. I suppose it'd be possible to suppress playback of one of the channels, which you can't when they're not separated, but do media players actually support that option?
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
I'd be incredibly surprised if the day/night cycle were manipulable. It's almost certainly just doing an internal frame counter. In fact, I bet you could find the counter easily by just looking for values in memory that increase by 1 each frame while standing around outside. That'd make it easier to plan for day/night changes.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.