Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cut or Missing Content - Speedrun Mode? #963

Closed
dqhol opened this issue Jun 9, 2016 · 12 comments
Closed

Cut or Missing Content - Speedrun Mode? #963

dqhol opened this issue Jun 9, 2016 · 12 comments
Assignees

Comments

@dqhol
Copy link
Collaborator

dqhol commented Jun 9, 2016

"Officially supported game modes such as "Hero Mode" and "Speedrun Mode""

http://www.fortressofdoors.com/supporting-an-indie-rpg-for-four-years/

Was this cut or forgotten? Seems a little unnecessary since most speedrunners have a speedrun timer anyhow. :P

@larsiusprime
Copy link
Owner

larsiusprime commented Jun 9, 2016

Cut for now. I might add it in later but I thought about it a lot and I don't think the game is super compatible with speedruns, though this issue might be a good place to talk about it.

With a game like DQ, there's basically two ways to do a "speedrun"

  • Track in-game time (ie 1 second of real time @ 16x = 16 seconds of real time at @ 1x)
  • Track real time

And then there's the question of:

  • Just track battle time
  • Track all time
  • Track battle time and out-of-battle time separately

So one thing we could do is just provide checkboxes to let people configure their timer and see what emerges. The thing is, under any situation I could think of, it seems like top-level speedrun play would be kind of boring. If you track out of battle time, you're basically tracking how fast someone can spam past menus and towns and overworld stuff.

Then in battle, because it's wave-based, there's not actually all that much room to shave time off -- you'd want to "send next" on every wave as soon as the option becomes available, and then defeat every wave as quickly as possible, but you've still got a basically set amount of time every battle will always take. And if you track real time rather than in-game time then you encourage everyone to play entirely and always at 16x where it's basically impossible to play efficiently as things just whiz past. But then if you just track in-game time maybe people start playing at 1/4x speed and the speedrun takes forever, because now it's much easier to shave off precious milliseconds.

I mean I suppose one way you could shave off time is by optimizing your high level strategy so that you can get through the absolute minimum of battles and stuff, but even then it just feels so different from what traditional speedrun fare is like.

In any case, if someone can think of a way to make speedrunning DQ fun & interesting to play (and fun and interesting to watch), then I'll gladly add some options in to aid that sort of playstyle.

But for now I can't really see it...

@larsiusprime larsiusprime self-assigned this Jun 9, 2016
@sikthehedgehog
Copy link

To be fair, I can easily imagine speedrunners trying to become good at 16x speed, especially with keyboard shortcuts at hand. Don't underestimate what those people are willing to do. All you need to ensure is predictability (i.e. given a specific input, you should get the same result) so it's feasible to memorize keystrokes known to work well, and I don't recall there being anything particularly random in the game? (I could be misremembering)

@larsiusprime
Copy link
Owner

larsiusprime commented Jun 9, 2016

That's an interesting perspective -- the game does use a fixed timestep so there should be no difference in playback between standard 1x and 16x. That said, there's a bit of RNG for stuff like status effects, but I could just create a preset seed for each battle so given the same inputs everything always goes exactly the same, or use "DOOM style randomness" where it just reads from a fixed list of values.

What about performance issues? On 16x speed in fullscreen mode I can't guarantee there won't be say, a GC pause when you're running that many updates per second (on my machine it seems fluid but it's hard to guarantee).

I guess that's where in-game timers could come in handy -- they could separately track undilated speed (1 sec @ 16x = 16 secs @ 1x) and game speed (1 sec of elapsed frame time regardless of how slow your computer is)...

@dqhol
Copy link
Collaborator Author

dqhol commented Jun 9, 2016

I can think of only one way to have a decent speedrun mode in a Tower Defense game. I kind of have an idea of it in my head, not sure if I can put it to words well, or if it would even be fun. Okay. Here we go.

As soon as you select Speedrun Mode for a new save, several things happen. Your EXP/Scrap gets locked to %, your 1/4 and 1/2 buttons are grayed out and you lose the ability to pause. Ever.

When you arrive on the world map as Azra, you see a red fuse (red secret icon, maybe) burning away just behind her. And it's not standing still, it's slowly coming at her. A timer appears in a corner counting down, the time until the fuse reaches where you are - the first tutorial level.

In the tutorial battle, your speed starts at x1 but can manually be increased to x16. The closer the fuse is to the level, the more the lowest speed buttons temporarily blank out. The farther you get from the fuse, the more you get back.

Alternatively, the closer the fuse is to you, the more of a Frenzy speed buff the enemies get, ever increasing.

Once the fuse moves over a level, it's icon goes gray. Can't go back there anymore, if for some reason you wanted to run back and swipe a quick unique item at x16.

Time doesn't pass outside of your save file on the save select screen, but does in towns, the party menu, options menu, anywhere that save file remains loaded.

If the fuse burns over a level while you're in it and you don't win it, that speedrun is over. Poof, save is gone. Or you just lose instantly if the fuse burns over the left you're in.

Maybe at the end of the game, if you beat Play or Play+ successfully, you get a reduction on your final time score depending on if you managed to do anything notable. Your number of gold stars, number of books, if you slayed the super sheep, sidequests done, etc.

Like I said, probably not a good idea, but it's a thought. :P Turns the game more into a panic runner, like Dino Run, escaping the ever approaching doom with a constant sense of dread. Sure, you can lower the game speed to try and manage your units without the ability to pause, but that's only going to make the fuse catch up and force things faster. Would anyone even play something like this?

(For the amount of work this would take, and how few people would use it, it really doesn't seem worthwhile to work on over DQ2)

@ManDude
Copy link
Collaborator

ManDude commented Jun 9, 2016

I think we should keep this simple and simply have speedrun mode not have cutscenes.

@sikthehedgehog
Copy link

sikthehedgehog commented Jun 9, 2016

What about performance issues? On 16x speed in fullscreen mode I can't guarantee there won't be say, a GC pause when you're running that many updates per second (on my machine it seems fluid but it's hard to guarantee).

Presumably you'd be counting logic frames and not real frames. In fact this is kind of needed given the platform doesn't have stable hardware specs (and hence you can't predict what will cause slow down and what won't).

EDIT: just to make it clear, logic frames is the internal framerate at which the game attempts to run. When there's frameskip, you end up skipping on displaying some real frames (and in really bad cases, the game slows down), but the game logic is still trying to run at the intended framerate (and trying to catch up), hence "logic" frames.

@tdrpg-fan
Copy link

My vote would be to keep this simple - start a timer when the game starts and just keep it running. Creative players can figure out the best way to turn that into a speed run :)

A different take on game modes that might be interesting would be a Portal-style puzzle mode. In Portal you can go back and play through the levels trying to optimize for various goals - least number of steps taken, least number of portals used, and least amount of time. See http://theportalwiki.com/wiki/Test_Chambers#Challenge_modes . I think this would fit well with DQ's goal of "focus and thinking" :) You could perhaps track stats for each level like:

  • Least number of unit placements onto the board
  • Least number of boosts and spells used

Of course DQ has character stats and equipment, unlike Portal, so you might want to give the player a locked set of characters with predetermined equipment and levels for each puzzle. That might be interesting and give players a reason to go back and play the game again.

I'm not sure if you want to divert this much time and effort away from actually making DQ2 though ;)

For me the interesting thing about watching DQ videos is seeing someone's strategy - how they approached the level; what ideas are different from mine. Watching someone play puzzle modes like this would be far more interesting to me than watching someone spam clicks as fast as they could on 16x speed :P I could certainly be the minority though.

@larsiusprime
Copy link
Owner

Cool, I think there's not enough time to do this before launch, but it's something we can patch in. As always, I prefer to do the simplest possible thing, and given that I can't really predict what speedrunners will prefer, just give them a set of simple tools they can use to create their own challenges.

To wit:

  • Timers tracking real-time and game-time separately.
    • (we use a fixed timestep so "logic time" is real easy to track)
  • Options to auto-skip cutscenes & tutorials (Regular players will probably use these too, we already have the tutorial auto skip options)
  • Robust hotkeys and controller support (hotkeys we already have, controller support is coming soon)
  • Deterministic pseudo-random function (could be patched in quite easily, I already have this implemented for something else, but I have too much stuff to do right now)
  • Global statistics tracker
    • just tracks a whole bunch of stats on a per level basis and a global basis.
  • Replay system (flixel has one already, I'm planning on extending it based on FlxActions, which will drive controller support)

Given all that stuff, someone will find the optimal way to carve a good speedrun mode out of it. Or some other interesting challenge. Also each of these alone is fairly easy to implement, or is already implemented.

@ManDude
Copy link
Collaborator

ManDude commented Jun 9, 2016

I asked my speedfriends about speedrun mode and this is the response:
dq03

@larsiusprime
Copy link
Owner

Interesting. Do people prefer to have their own built-in splits or do they
prefer to define them themselves, or use their own software?

If/when I get around to doing this what I might do is just make the splits
super data driven, ie they're just listening for the game to fire off a
generic event "battle 1 started", "battle 1 finished", "town 1 started",
etc, and then I make the game fire off a bunch of those, and then come up
with a decent "standard" I think is good, but people can configure their
own split schedule.

On Thu, Jun 9, 2016 at 1:00 PM, ManDude notifications@github.com wrote:

I asked my speedfriends about speedrun mode and this is the response:
[image: dq03]
https://cloud.githubusercontent.com/assets/7569514/15940545/616dc1c6-2e74-11e6-86dc-138d62df4e27.png


You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
#963 (comment),
or mute the thread
https://github.com/notifications/unsubscribe/AAtG-JIJ46aDWHANZBbYF__8sU0wKb3Hks5qKFSpgaJpZM4IxoRo
.

www.fortressofdoors.com -- Games, Art, Design

@ManDude
Copy link
Collaborator

ManDude commented Jun 9, 2016

It's usually better to use an external program to allow for more customization, but each speed game has their own rules. Some games have IGT (in-game time) and RTA (real-time attack) categories because of this.

@larsiusprime
Copy link
Owner

Yeah that's kind of why I lean towards keeping the tools simple rather than
prescriptive, if we put anything in the game it's just to expose
information that might be difficult for an external tool to get at.

On Thu, Jun 9, 2016 at 1:44 PM, ManDude notifications@github.com wrote:

It's usually better to use an external program to allow for more
customization, but each speed game has their own rules. Some games have IGT
(in-game time) and RTA (real-time attack) categories because of this.


You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
#963 (comment),
or mute the thread
https://github.com/notifications/unsubscribe/AAtG-C8b962mIALnVkTtpleJFxN4LDgEks5qKF8KgaJpZM4IxoRo
.

www.fortressofdoors.com -- Games, Art, Design

@dqhol dqhol added this to the Beta milestone Nov 7, 2016
@larsiusprime larsiusprime modified the milestones: DQ2 Beta, Alpha Nov 2, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants