GTP event data entry project

  • Thread starter Vaxen
  • 61 comments
  • 4,342 views
I haven't dug too deep into this yet but a quick glace with a hex editor and it doesn't look like much is in there. From what I understand of how the replays are handled in GT, I'm not surprised either. I'm fairly certain that they're calculated on the fly... :grumpy:

Another thing to note is that the string data which Pallera identified is not used as input for the actual save replay, but is just for more convenient display. This is the source of the tire save bug (where you can run a lap on S2/S2, then change it to N3/N3, and the save replay summary will show N3/N3). Even if we can't extract splits, just being able to extract the car settings from the file would be very valuable for a validator.
 
Yeah, I didn't realize it was already exploited but I thought of the same thing. I guess that means PD didn't use any checksums on the param data. Not that it really matters since we just want to extract and not change. But if the replay doesn't have a checksum, it could make testing easier. Assuming the data is even there...
 
Yeah, I didn't realize it was already exploited but I thought of the same thing. I guess that means PD didn't use any checksums on the param data. Not that it really matters since we just want to extract and not change. But if the replay doesn't have a checksum, it could make testing easier. Assuming the data is even there...

I can guarantee that the car parameter data is there (including tire selection), as it would be absolutely required for replays to work at all (given that it's just a captured series of inputs instead of a series of orientation/speed vectors). This is the same reason online replays can't be done currently, btw.
 
Right, I know at least the car stuff has to be there due to the way replays work but from my quick look at it, it's not in plain text. I need to spend some more time and like P3nt suggested, start looking for patterns and such. That's why I'm hoping the replay doesn't have a checksum, so I can fiddle with the bits and see if anything changed. The flip side to that is it could open the door for malicious tampering as well.
 
I tried changing things and even changing data in the param.sfo caused an error when copying the replay from my usb stick to the PS3
 
Ah, so there is a checksum in there somewhere!

I'm thinking the best approach would be a lap with as controlled inputs as possible (daytona in an OFC-1 in first gear, maybe... might even be able to avoid turning with the banking) -- change only the tires and do it again... see what's changed.
 
Right, I know at least the car stuff has to be there due to the way replays work but from my quick look at it, it's not in plain text. I need to spend some more time and like P3nt suggested, start looking for patterns and such. That's why I'm hoping the replay doesn't have a checksum, so I can fiddle with the bits and see if anything changed. The flip side to that is it could open the door for malicious tampering as well.

Gimme a shout when you can make me do suzuka in under a minute :D
 
I tried changing things and even changing data in the param.sfo caused an error when copying the replay from my usb stick to the PS3

Careful with that hax Eugene! If there's a checksum then you can bet your bum sony have it encrypted and if Sony have it encrypted you can bet your bum the only way to decrypt will be cracking into the code. This company is renowned for not seeing the funny side of IP abuse :nervous:
 
:lol::lol: I've been listening to Floyd all day at work too!

I don't really want to "hack" anything per se, we just want to extract the important bits, and preferably unmolested at that. Personally, I'm glad that there's a checksum and it's not in plaintext. The leaderboards are bad enough as it is. :irked:
 
Since irc is a massive big idler-based fail factory, can someone please click this and tell me if they see a list of registered drivers in fetching purple and gold or a message from the server saying you're not allowed to look at this

I lost a harddrive the other day - the one with my apache server on it and I've just set it back up - want to know if I have my security set up right. (I kinda suck at such things)

cheers in advance...
 
Looks good to me...

pent_test.PNG


Not complaining by any stretch and I'm sure this is just a rough prototype but when you sort by a different column, you get a new window. Then, if you close it and go back to the original, when you change pages, it's sorted the "new" way. No biggie but I figured I'd throw that out there. Either way, awesome work so far! 👍 :cheers:
 
Last edited:
Thanks man. That's us got a test server up and running now - outline database schema in place and a few class definitions. I sent Vaxen off to learn php and I haven't heard from him since. He's either having big fun or attempting suicide, php is like that :sly:

Anyway the server is running on my local machine which gets switched off at night but it's on every day from about 6:00 GMT to 23:00-ish, later at weekends.

I've done enough now - I'm off to wrestle the GF's son away from COD and get some racing done.
 
Hey Pent,

It's looking great. I've been busy at work, so not much time to spend on this project until this weekend (tomorrow). I'll spend some time with it and get back to you with all my stupid questions.

Tables are looking awesome. You are da man! :bowdown:
 
You guys seem to be flying thru this project 👍
Please PM me if I can help by doing some data entry or user testing or thinking work on desired functionality.
Great work :bowdown:

To pent - I don't see zip when I hit your table link, but it looks like it is more a server problem than something else ...
 
Last edited:
*update* they confiscated my internets again so the server will be down til friday. The upside is I had no GT this weekend so I got loads done :D

tralla_template_driverlist.jpg
 
Last edited:
*update*

I've split the Leaderboard class in to separate subclasses cos I have a nice clear picture of how it's all going to fit together now.

Leaderboard has now been superseded by Event which is pretty close to a fully functioning controller class. Event will contain all the drivers, awards and results we need to run an event. Results, including split times and replay files can be entered, validated and processed here. Awards can be given or revoked and the whole thing can be spewed out, after the fact, to a bonny results page with details of the podiums, also rans, DNF's and replay files. All the kind of bollox you'd expect.

The driver class will be interesting in itself because we can show a trophy room for each driver along with a bunch of stats and drilldown to the events themselves. Things like "events currently signed up for", "total points", "average score per race", etc. spring immediately to mind.

I'm hoping that, by the time my internets have been returned to me on friday, that I'll have some interface up and running for y'all to look at. Screens for admins to set up new events, screens for drivers to register for events, submit results, screens to view results, etc...

at that point I'll bodge together a registration/login system and then everyone can set up accounts and start testing the crap out of it while I work on bugfixes and making everything look pretty with my CSS voodoo :D
 
Sorry for being silent for a while guys. I intend to go through this tonight and pass on any thoughts /ideas I may have. 👍
 
Sorry for being silent for a while guys. I intend to go through this tonight and pass on any thoughts /ideas I may have. 👍

To be honest you're probably best waiting until I have a release on the table. A lot of things you suggest may already be in place. If you can have a play about with a working alpha you'll at least have a feel for what it's missing/ what is stupid and should be ditched/ what would be better handled another way, etc.

Should have test server up for the weekend.
 
To be honest you're probably best waiting until I have a release on the table. A lot of things you suggest may already be in place. If you can have a play about with a working alpha you'll at least have a feel for what it's missing/ what is stupid and should be ditched/ what would be better handled another way, etc.

Should have test server up for the weekend.

sounds good to me. 👍
 
Story so far:

My internets have been returned to me and they're now safely tucked up in my pc at home.

The data model and controller classes are pretty much done but only half tested and I've begun to develop the user screens which I'm hoping to have finished by tonight.

So far the whole thing weighs in at over 2000 lines of code, it's been a productive week, mainly due to me not having access to as much as a single solitary crumb of internet.

As soon as I get the user and organiser interfaces together, Bigracer has graciously volunteered to be my "crash test dummy" so I'll set him up an account and see how many weird and wonderful ways he's able to screw things up.

Once that's done I'll open it up to beta where everyone can sign up for accounts and setup/join events and post results and all that jazz.

If you want to see the totally uninspiring, stylesheet free, story so far just head along to my place and try keep the snigering to a minimum - it will look better than this when I come up with a stylesheet (I promise)

Note: until I come up with a login system I've forced user=me whilst I'm testing, which is why clicking on "mypage" will bring up my page, not yours :sly:
 
As soon as I get the user and organiser interfaces together, Bigracer has graciously volunteered to be my "crash test dummy" so I'll set him up an account and see how many weird and wonderful ways he's able to screw things up.
I've been known to screw things up in rather many and unexpected ways, so take care what you wish for :lol:

What I'm curious about now is display and choices of

- GTP name vs. Registry name
- split time(s) and lap time(s) for each and every (unique) combo
- listings all divisions and per division
- rankings (final split, added laps, added splits)
- user input vs. controlled input (name, division, controller device)
- combo input (race specifics)
- sign up control (who can sign up, link to Registry list, maintenance, standard GTP password?)

In other words, Pent, I'm here waiting 👍
 
erm... *shuffles nervously and stares at is feet*

I got kinda drunk yesterday, and then played some GT and then drunk a bit more. :embarrassed:

Upshot is all the stuff I said I was going to do yesterday I'm going to do today.
 
Basically, from your point of view it will be a webpage where you input stuff like laptimes and submit replays and stuff.

The event organizers (yourself included if you feel like it) will use it to set up events. They will choose the type of events, from menus, including number of drivers, date and time, heats, specific divisions allowed to compete .. etc. All the kind of crap that they have to decide on at the moment.

When they press the "Go" button a bunch of pm's will be sent out with a link to the event where you will be able to sign up for it (if necessary) and then post laptimes (if it's a time trial), replays, reports and the like.

This system will keep track of the prize winners and I've included a simple points system which will accumulate as you win prizes. eg. 1st place might award 3 points, 2nd - 2 and 3rd - 1. Or whatever so you'll have a kinda overall score and a trophy room to check out all the prizes/cups and medals you've won. The really industrious mods can include pics of these or choose from defaults.

It'll do a whole bunch of other stuff that gets suggested and included and all that rigmarole but in a nutshell that's what I'm trying to accomplish. I'm pretty sure Vaxen is on more or less the same page as I am. Not sure about anyone else.

Tonight I managed to run a test where I created a new driver, a new prize and then awarded the prize to the driver. Might not sound like much but that's the story so far.

Since this is the coding forum and in case anyone is interested - here's the test session

Code:
========== New leader board object instantiated ================
modified: 0
Divisions
 
Array
(
)
 
Events
 
Array
(
)
 
Drivers
 
Array
(
)
 
Awards
 
Array
(
)
 
==== Adding Pigsy Mustang to $leaderboard->Drivers ==========
modified: 0
Divisions
 
Array
(
)
 
Events
 
Array
(
)
 
Drivers
 
Array
(
    [0] => driver Object
        (
            [modified:private] => 0
            [DriverID:private] => new
            [DriverName:private] => pigsy mustang
            [Division:private] => unseeded
            [SubDivision:private] => unseeded
            [PSN:private] => GTP_P3nT4gR4m
            [ForumID:private] => P3nT4gR4m
            [Awards:private] => Array
                (
                )
 
            [Points:private] => 0
            [Modified] => 0
        )
 
)
 
Awards
 
Array
(
)
 
============= Lets give this asshole a prize =================
============ First we need to invent an award ================
We'll make one directly for this test but these will be done through the events interface
 
modified: 0
Divisions
 
Array
(
)
 
Events
 
Array
(
)
 
Drivers
 
Array
(
    [0] => driver Object
        (
            [modified:private] => 0
            [DriverID:private] => new
            [DriverName:private] => pigsy mustang
            [Division:private] => unseeded
            [SubDivision:private] => unseeded
            [PSN:private] => GTP_P3nT4gR4m
            [ForumID:private] => P3nT4gR4m
            [Awards:private] => Array
                (
                )
 
            [Points:private] => 0
            [Modified] => 0
        )
 
)
 
Awards
 
Array
(
    [0] => award Object
        (
            [modified:private] => 0
            [AwardID:private] => 999
            [EventID:private] => 666
            [AwardName:private] => teh Fugly Cup for not so pretty people
            [Points:private] => 3
            [WinnerID:private] => none
            [Image:private] => 
        )
 
)
 
============ Award now has no winner ================
====== new Driver has no awards and no points =======
 
============ Now we present the award ================
========== Leaderboard now looks like this ===========
modified: 0
Divisions
 
Array
(
)
 
Events
 
Array
(
)
 
Drivers
 
Array
(
    [0] => driver Object
        (
            [modified:private] => 0
            [DriverID:private] => new
            [DriverName:private] => pigsy mustang
            [Division:private] => unseeded
            [SubDivision:private] => unseeded
            [PSN:private] => GTP_P3nT4gR4m
            [ForumID:private] => P3nT4gR4m
            [Awards:private] => Array
                (
                    [0] => 999
                )
 
            [Points:private] => 3
            [Modified] => 0
        )
 
)
 
Awards
 
Array
(
    [0] => award Object
        (
            [modified:private] => 0
            [AwardID:private] => 999
            [EventID:private] => 666
            [AwardName:private] => teh Fugly Cup for not so pretty people
            [Points:private] => 3
            [WinnerID:private] => new
            [Image:private] => 
        )
 
)
 
Award now has winnerID "New" this couldn't happen because it'll be impossible to give an award to a user who has not been created in the database and given an ID. For the purpose of the excercise this is a success

Using the class I've been working it took 25 lines of code to produce this. 20 of those were comments and debug info. I'm quite chuffed with the days work so I'm off to play GT5P now - see you at Suzuka :P

It sounds like this will require private rooms and races in GT5P. i don't know if someone already said this (i only looked at things relating to my posts). something a bit off topic but something i'm not clear about; will there be an update that will add damage to GT5P?
 
It sounds like this will require private rooms and races in GT5P. i don't know if someone already said this (i only looked at things relating to my posts). something a bit off topic but something i'm not clear about; will there be an update that will add damage to GT5P?

This project will support competition in virtually any form you can imagine, including racing in private rooms, racing in public rooms, comparing results against arcade racing vs AIs, comparison of results from game events (CBAS class), time trials, or even scored drifts. As long as you can come up with a time/place/score in the game, it should support it.

For your question about any features added in the game, you're right that it's off topic. Try using search. 👍

The project is making slow but steady progress. Hopefully we'll have something to show soonish.
 
The project is making slow but steady progress. Hopefully we'll have something to show soonish.

It'll go quicker if you hurry up and do all my work for me :crazy:

Seriously tho, the scope of this thing has kinda grown from my original idea. Or maybe I didn't realise how much was involved. Either way - we're not more than a few days away from an alpha release and from then it should only be a week or two before we roll out a beta.

A lot of the problem is this damn job I have. The sons of bitches keep making me do work when I'm trying to code this. Damn all employers to the smelliest corner of hell for all eternity :grumpy:
 
is there any chance I could help with this? My coding skills are limited pretty much just to HTML, CSS, and a little JavaScript, but I would love to help with the graphics. although I see P3nT4gR4m has done something really nice looking, I want to take a crack at it to give me both something to do and a reason to be on the computer so much :sly:.

I'll work on a static design to give you guys a taste of what I can do.
 
Back