View previous topic :: View next topic |
Author |
Message |
elScarecrow
Joined: 22 Apr 2008 Posts: 1404 Location: Raleigh
|
Posted: Tue Feb 07, 2012 12:55 am Post subject: |
|
|
tannernieland11 wrote: | Thank you Slowhero. If it wasn't for this site my scores through GH1-GH3 would be piss awful.
I would like to know who did all this? Finds all the right paths. Awesome guy. |
it's automated _________________
Smaller dreams get pushed aside
For larger ones that change my life |
|
Back to top |
|
|
tma
Joined: 03 May 2007 Posts: 1414 Location: Australia
|
Posted: Thu May 17, 2012 4:50 am Post subject: |
|
|
tannernieland11 wrote: | Thank you Slowhero. If it wasn't for this site my scores through GH1-GH3 would be piss awful.
I would like to know who did all this? Finds all the right paths. Awesome guy. |
debr5836 was the person who wrote the original program and created the optimisation algorithm. I took over and adopted the code to the new game file formats in GH3+, but the fundamental algorithm is unchanged - so debr5836 is your man.
I've been looking at the game files again for an unrelated project (building a guitar hero playing bot) and it's made me start to think about the charts again, and perhaps looking into computer generated optimal charts for GH4+ and RB1/2/3/etc. If there's enough interest it might push me to work on it some more and think about how the algorithm would work. |
|
Back to top |
|
|
Graf
Joined: 08 Aug 2007 Posts: 6213 Location: Lanoka Harbor, New Jersey
|
Posted: Thu May 17, 2012 1:52 pm Post subject: |
|
|
Seeing tma as the most recent post made me do a double-take
Welcome back, good luck on your bot _________________
|
|
Back to top |
|
|
Cabanon
Joined: 29 Oct 2007 Posts: 6464 Location: Quebec, Canada
|
Posted: Thu May 17, 2012 2:06 pm Post subject: |
|
|
tma wrote: | I've been looking at the game files again for an unrelated project (building a guitar hero playing bot) and it's made me start to think about the charts again, and perhaps looking into computer generated optimal charts for RB1/2/3/etc. |
RB1 - RB2 - DLC - ACDC - TBRB - LRB - TBRB DLC
http://www.apathtoofar.com
as far as interest, WE ARE interested VERY much. charts are all out on http://charts.ajanata.com/ but optimal path are not. we would be very very happy to see this happening.
PLEASE keep us update _________________
|
|
Back to top |
|
|
tma
Joined: 03 May 2007 Posts: 1414 Location: Australia
|
Posted: Thu May 17, 2012 3:26 pm Post subject: |
|
|
Cabanon wrote: | tma wrote: | I've been looking at the game files again for an unrelated project (building a guitar hero playing bot) and it's made me start to think about the charts again, and perhaps looking into computer generated optimal charts for RB1/2/3/etc. |
RB1 - RB2 - DLC - ACDC - TBRB - LRB - TBRB DLC
http://www.apathtoofar.com |
Ooh that's very nice. I've shot an email to the guy who runs/ran apathtoofar, maybe we can collaborate. |
|
Back to top |
|
|
eddaket
Joined: 19 Jul 2007 Posts: 2020
|
Posted: Thu May 17, 2012 3:43 pm Post subject: |
|
|
tma wrote: | Cabanon wrote: | tma wrote: | I've been looking at the game files again for an unrelated project (building a guitar hero playing bot) and it's made me start to think about the charts again, and perhaps looking into computer generated optimal charts for RB1/2/3/etc. |
RB1 - RB2 - DLC - ACDC - TBRB - LRB - TBRB DLC
http://www.apathtoofar.com |
Ooh that's very nice. I've shot an email to the guy who runs/ran apathtoofar, maybe we can collaborate. |
I had started to make one for songs in RB3 (since the paths would be different than in RB1 or 2 with unison bonuses) and had a good working copy that I actually used to path songs last league season, but there were a few bugs that I needed to sort out and it was highly inefficient (took wayyyyyyyyyy too long). I'd be interested in helping you out if you want another set of eyes. |
|
Back to top |
|
|
tma
Joined: 03 May 2007 Posts: 1414 Location: Australia
|
Posted: Thu May 17, 2012 11:26 pm Post subject: |
|
|
eddaket wrote: | tma wrote: | Ooh that's very nice. I've shot an email to the guy who runs/ran apathtoofar, maybe we can collaborate. |
I had started to make one for songs in RB3 (since the paths would be different than in RB1 or 2 with unison bonuses) and had a good working copy that I actually used to path songs last league season, but there were a few bugs that I needed to sort out and it was highly inefficient (took wayyyyyyyyyy too long). I'd be interested in helping you out if you want another set of eyes. |
That'd be great. The more people willing to help out the better the end product will be. In the past I'd been a bit precious about letting people look at how it worked, but that doesn't help anyone anymore. The original reason for that (not spoiling things for people wanting to make natural paths) is less relevant today than it was then.
Jeremy (pathtoofar) has already responded, I'll take a look at his code over the weekend. He also said that his routine took a very long time to process the paths, which doesn't surprise me too much given the method is effectively brute force. I imagine that this is also your approach?
I never really wrapped my head around debr5836's routine completely (complexity and no documentation didn't help), but from what I gather it doesn't use a brute force approach; it's actually very fast. Some of the factors that would cut down on pathing options in earlier GH games aren't valid anymore, of course, since SP/OD phrases can overlap, but there are probably some major shortcuts we can take with a future optimisation routine.
I'm thinking along these lines:
a) disregard everything in the song before SP/OD can actually be activated for the first time (obviously).
b) work out the highest point scoring sections in a song, using a minimum window size of the smallest amount of time SP/OD can be active for.
c) iterate over the possibilities to cover as many of these sections as possible given the existing SP/OD sections.
d) ????
e) PROFIT
Jeremy says his routine worked backwards through the song trying out all the possible combinations. I believe debr5836's code also works backwards. There's probably some obvious reason for doing this but the logic escapes me at the moment. Could you illuminate me? I'm wondering if a read-forward approach is possible.
While the brute force approach certainly works, in order to speed the processing up it might just be a matter of working out what combinations we know won't yield a valid path and simply skipping them.
Edit: could you expand a bit on the differences in the RB3 engine? I haven't looked in depth at any of the RB games, but in play they didn't seem that much different. |
|
Back to top |
|
|
tma
Joined: 03 May 2007 Posts: 1414 Location: Australia
|
Posted: Thu May 17, 2012 11:52 pm Post subject: |
|
|
Just diverting the topic a little, here's some output of what I've been working on for my Guitar Hero bot project:
Code: | tarragon@tyrell:~/cvs/spopt/bin $ ./generateArduino.pl ghm ../assets/gamefiles/GuitarHeroMetallica/x360/allnightmarelong.mid.qb expert guitar | head -n20
TIMESIG: tick 000000 microsecond 0000000000, ----- - 4 beats per measure
TEMPO : tick 000000 microsecond 0000000000, ----- - 493000 (~122 bpm)
TEMPO : tick 001920 microsecond 0001972000, ----- - 493000 (~122 bpm)
TEMPO : tick 003840 microsecond 0003944000, ----- - 488250 (~123 bpm)
NOTEON : tick 003840 microsecond 0003944000, G---- -
NOTEON : tick 004080 microsecond 0004188630, --Y-- -
NOTEOFF: tick 004081 microsecond 0004189647, --y-- -
NOTEON : tick 004320 microsecond 0004432250, ---B- -
NOTEOFF: tick 004321 microsecond 0004433267, ---b- -
NOTEON : tick 004559 microsecond 0004675867, ----O -
NOTEOFF: tick 005279 microsecond 0005407771, ----o -
NOTEON : tick 005280 microsecond 0005408750, ---B- -
TEMPO : tick 005760 microsecond 0005897000, ----- - 498000 (~120 bpm)
NOTEOFF: tick 005760 microsecond 0005897000, g--b- -
NOTEON : tick 005760 microsecond 0005897000, G---- -
NOTEON : tick 006000 microsecond 0006146503, --Y-- -
NOTEOFF: tick 006001 microsecond 0006147540, --y-- -
NOTEON : tick 006240 microsecond 0006395000, ---B- -
NOTEOFF: tick 006241 microsecond 0006396037, ---b- -
NOTEOFF: tick 006479 microsecond 0006643498, g---- - |
What you're seeing here is the result of my efforts to converting midi ticks into per microsecond actions for a microprocessor board (in this case, an Arduino). There's some hardware to go along with this which I'm still in the process of building, but I think the hard parts of the file processing side are done. |
|
Back to top |
|
|
Cabanon
Joined: 29 Oct 2007 Posts: 6464 Location: Quebec, Canada
|
Posted: Fri May 18, 2012 1:07 am Post subject: |
|
|
just a question about why a bot ? any song in particular to prove something or just for the heck of it ? _________________
|
|
Back to top |
|
|
tma
Joined: 03 May 2007 Posts: 1414 Location: Australia
|
Posted: Fri May 18, 2012 1:26 am Post subject: |
|
|
Cabanon wrote: | just a question about why a bot ? any song in particular to prove something or just for the heck of it ? |
A bit of both? I've become something of an achievements whore lately; I came across Arduino via a post on Ars Technica and it intrigued me; I figured given my experience with the game files I could make a bot to play songs perfectly; it seemed like a cool project to build, and it means I can finally get the achievements for Jordan and TtFaF which will otherwise always be out of my reach.
I have no interest in using it for leaderboard scores, of course. |
|
Back to top |
|
|
eddaket
Joined: 19 Jul 2007 Posts: 2020
|
Posted: Fri May 18, 2012 4:36 pm Post subject: |
|
|
tma wrote: | eddaket wrote: | tma wrote: | Ooh that's very nice. I've shot an email to the guy who runs/ran apathtoofar, maybe we can collaborate. |
I had started to make one for songs in RB3 (since the paths would be different than in RB1 or 2 with unison bonuses) and had a good working copy that I actually used to path songs last league season, but there were a few bugs that I needed to sort out and it was highly inefficient (took wayyyyyyyyyy too long). I'd be interested in helping you out if you want another set of eyes. |
That'd be great. The more people willing to help out the better the end product will be. In the past I'd been a bit precious about letting people look at how it worked, but that doesn't help anyone anymore. The original reason for that (not spoiling things for people wanting to make natural paths) is less relevant today than it was then.
Jeremy (pathtoofar) has already responded, I'll take a look at his code over the weekend. He also said that his routine took a very long time to process the paths, which doesn't surprise me too much given the method is effectively brute force. I imagine that this is also your approach?
I never really wrapped my head around debr5836's routine completely (complexity and no documentation didn't help), but from what I gather it doesn't use a brute force approach; it's actually very fast. Some of the factors that would cut down on pathing options in earlier GH games aren't valid anymore, of course, since SP/OD phrases can overlap, but there are probably some major shortcuts we can take with a future optimisation routine.
I'm thinking along these lines:
a) disregard everything in the song before SP/OD can actually be activated for the first time (obviously).
b) work out the highest point scoring sections in a song, using a minimum window size of the smallest amount of time SP/OD can be active for.
c) iterate over the possibilities to cover as many of these sections as possible given the existing SP/OD sections.
d) ????
e) PROFIT
Jeremy says his routine worked backwards through the song trying out all the possible combinations. I believe debr5836's code also works backwards. There's probably some obvious reason for doing this but the logic escapes me at the moment. Could you illuminate me? I'm wondering if a read-forward approach is possible.
While the brute force approach certainly works, in order to speed the processing up it might just be a matter of working out what combinations we know won't yield a valid path and simply skipping them.
Edit: could you expand a bit on the differences in the RB3 engine? I haven't looked in depth at any of the RB games, but in play they didn't seem that much different. |
Yeah that was basically my method. Lots and lots of brute force. I would try each possible path and pick the best one. There was some time saved with paths with invalid activations (a 1 phrase activation where the phrase has no whammy), but it just took a stupidly long amount of time to make the path if the song had over 20 or so phrases.
I actually worked forward through the song rather than backwards. I remember reading somewhere that apathtoofar worked backwards, but I couldn't figure out why it would.
Going along with you "sections" idea, I have an idea that's somewhat related. When finding where to activate, I basically would say "if I use X-number of phrases here, I have to activate somewhere between PointA and PointB." I didn't actually implement it, but in thinking about it now I decided you should be able to save that and work it into sections. I'm still thinking about it, but I think it could work.
RB3 counted the unison bonuses in single player now. Basically in RB1/2, if drums, bass, and guitar all have an OD phrase at the same point in the song, in bandplay it will give them all 32 beats of OD for hitting it rather than the usual 16. In RB3, you don't need to be in bandplay in order for unison bonuses to matter, meaning a single player guitarist can get 32 beats of OD from a single phrase if it is a unison bonus. |
|
Back to top |
|
|
LocalH
Joined: 30 Oct 2006 Posts: 1400 Location: MiloHax
|
Posted: Sat May 19, 2012 2:59 am Post subject: |
|
|
tma wrote: | Cabanon wrote: | just a question about why a bot ? any song in particular to prove something or just for the heck of it ? |
A bit of both? I've become something of an achievements whore lately; I came across Arduino via a post on Ars Technica and it intrigued me; I figured given my experience with the game files I could make a bot to play songs perfectly; it seemed like a cool project to build, and it means I can finally get the achievements for Jordan and TtFaF which will otherwise always be out of my reach.
I have no interest in using it for leaderboard scores, of course. |
I have a request. When you have your bot able to send input to the game, would you be able to test it with NTSC Troggy (on PS2 if possible?) and set it straight once and for all whether it's possible to FC? GH2's autoplayer helps zilch because it can hit anything and everything, even the "dummy" 5-note chord you see when you have a note on the very first beat of a chart. I have a chart by Eoinfreak that is so full of notes that it actually crashes the engine at 0.25x track speed but just merely lags heavily at 0.5x, and the autoplayer FCs it even under such lag (literally, at one point it's so lagged that the score jumps by 40k between rendered frames ) _________________
|
|
Back to top |
|
|
tma
Joined: 03 May 2007 Posts: 1414 Location: Australia
|
Posted: Sat May 19, 2012 7:42 am Post subject: |
|
|
LocalH wrote: | I have a request. When you have your bot able to send input to the game, would you be able to test it with NTSC Troggy (on PS2 if possible?) and set it straight once and for all whether it's possible to FC? GH2's autoplayer helps zilch because it can hit anything and everything, even the "dummy" 5-note chord you see when you have a note on the very first beat of a chart. I have a chart by Eoinfreak that is so full of notes that it actually crashes the engine at 0.25x track speed but just merely lags heavily at 0.5x, and the autoplayer FCs it even under such lag (literally, at one point it's so lagged that the score jumps by 40k between rendered frames ) |
I can certainly give it a go. Is that a custom? I don't have a PS2 I'm afraid, in fact I've never even tried customs, however PS2s are cheap... I could be coerced into it. ;) |
|
Back to top |
|
|
Bj0rn
Joined: 31 Aug 2007 Posts: 522 Location: Stockholm, Sweden
|
Posted: Sat May 19, 2012 11:55 am Post subject: |
|
|
I would like to help out with this project too. I've been thinking about doing my own star power optimizer for years, both for later GH games, but also for more exact GH3/GHA paths. I never got much farther than a program that parses a .chart file and outputs a chart image like this: http://i284.photobucket.com/albums/ll26/Bj0rnSH/playwithme4-1.png (I very much mimicked the Slowhero style :P)
But I think I can be of some help if this gets going. I've been thinking about algorithms, although mostly for earlier engines with overlapping SP. I think I've come up with a couple of ideas that should perform far better than brute force, though they may be similar to the ideas you guys have. I'll try to explain later. EDIT: Sorry it's taking a while, I'll get more time after tomorrow. I'm trying to figure out exactly how the algorithm would be and how it would differ depending on old/new SP overlapping.
Plus, I'm sure I can be of some help when it comes to testing the paths _________________
Last edited by Bj0rn on Sun May 20, 2012 9:58 pm; edited 1 time in total |
|
Back to top |
|
|
LocalH
Joined: 30 Oct 2006 Posts: 1400 Location: MiloHax
|
Posted: Sat May 19, 2012 7:37 pm Post subject: |
|
|
tma wrote: | I can certainly give it a go. Is that a custom? I don't have a PS2 I'm afraid, in fact I've never even tried customs, however PS2s are cheap... I could be coerced into it. ;) |
Trogdor, man, Trogdor. I dunno the differences between the 360 and the PS2 in terms of GH2 and the strum limit, but nothing custom required, just a PS2 and an original GH2 disc. I do recommend you find a fat PS2 and a network adapter, especially if you have a decently sized IDE HDD laying around, so you can save the laser. If all you can find is a slim, you can still save the laser with slower loading methods but they work fine with GH2. _________________
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Copyright © 2006-2024 ScoreHero, LLC
|
Powered by phpBB
|