OutRun2006Tweaks
OutRun2006Tweaks copied to clipboard
GUI/overlay ideas
Observant ones might have noticed we now have an imgui gui overlay branch 🥳
Right now it's just used for some debug tools, but might be cool to add some actual features there too.
eg. some things which could be possible (though no guarantees):
- Built-in course editor (need to look into how course editing works though..)
- Camera tools (free-cam, frame-advance?)
- RetroAchievements pop-ups / login
- In-game text chat, maybe a global chat for all users, or a per-lobby chat
- Customization of things like license plates/other things that we can draw via code
Live settings editing is another thing that would be neat but atm most of the settings aren't really changeable once in-game, would take some work to update our patches/hooks for that (and 90% probably aren't even things that are worth live-editing...)
If anyone has any other ideas for it feel free to post here!
Maybe the CT functions? Hide driver, etc. Memory address 07804C2 1-8 lets you swap car skins on the fly. I still need to mess with the free cam, and find a way to anchor the camera but still have it focus on the car (mentioned in https://github.com/emoose/OutRun2006Tweaks/issues/83).
Regarding RA, I'm not sure if you'd be able to submit them officially since they require preconfigured emulators (otherwise you'd just be able to submit false achievements via CMD or something). It might have to settle with just duplicating the achievements but not be able to submit them (store them on the Tweaks server?), unless they were approved as a PC category (doubtful since they're keen on having pre-approved emulators).
For online, dunno if it's possible but some kind of indicator that there's a lobby up from the main menu would be useful. Even just a little green light. I don't know how viable that is though since it would require drawing a new asset. Maybe the same function that lets you draw the CD Switcher track name? Just spitballing. Otherwise a global chat that's visible would be useful if possible, then you can just announce a lobby there.
Regarding RA, I'm not sure if you'd be able to submit them officially since they require preconfigured emulators (otherwise you'd just be able to submit false achievements via CMD or something). It might have to settle with just duplicating the achievements but not be able to submit them (store them on the Tweaks server?), unless they were approved as a PC category (doubtful since they're keen on having pre-approved emulators).
RetroAchievements
They already have PC Final Fantasy XI (Private Server), so it may not be impossible.
https://retroachievements.org/system/102/games
https://retroachievements.org/viewtopic.php?t=25139
Replay: Record Real-time Demo / Watch Demo and Ghost I think it would be neat if there was a way to watch ghosts from other players in the server. Just sit and watch them play. So tweaks would have a demo player that could record/play "demos" like Quake / Counter-Strike and these already uploaded ghosts. With this in mind we could switch the cam while watching, or maybe even fly over the track. This also could be used to create a new attract mode / intro in high resolution. Or maybe, even better, after the logo appears, before it changes to the video, a realtime demo (or ghost) could be played instead.
Online
- Manage spectator mode, cycle between players.
- Manage network status UI information
- Manage Notification System / Player Status / List Current Players
- Friends management
- Lobby creation in background
- Session Management options
Button Prompt Textures How it would work. There could have a subfolder inside the path "textures\load\buttons" that when detected subfolders like for example "textures\load\buttons\playstation\ps-colors[relatedTextures].dds" would generate a dropdown list to be selected and switched on-the-fly. This standard could be copied from the SonicTV's Repo.
Overlay Button Combo An overlay combo would be interesting so people that plays the game on a TV with a controller could access the settings and even navigate between options, tabs, etc.
Ranking / Clarissa Server UI Maybe replicate some info from the server that is hosting OR2006 so we could check lobbies, scores, etc.
Easy-Join Discord Add a QR CODE so people could scan the image and join the Tweaks Discord Server with a smartphone.
Out for curiosity, would this overlay work with ReShade along? Your overlay looks exactly like ReShade, does it share the same UI library?
For now I think it's enough. If I get other ideas I will share with you guys.
EDIT: New online features issues were created following @Tenome suggestion. Things this way will get more organized and easy to track. :)
Just fyi this thread is for the GUI/overlay (debug menu), not online features in general. Those should all probably be individual feature requests threads.
Just fyi this thread is for the GUI/overlay (debug menu), not online features in general. Those should all probably be individual feature requests threads.
I know, I read. I was going to create issues, but as this interesting thread came earlier, I thought why not. Anyway, they would fit well on an overlay for management and enabling or disabling. All interactions that I suggested would be possible in an overlay.
Some of these would probably take a lot of work, but never say never.
For the rankings/discord stuff I think they'd probably be better handled by other overlays or just web-browser (probably worth adding some links into the overlay to open the browser for people though, since a lot of people probably aren't even aware of them)
About demos, the game does seem to have some demo recording/playback code built into it but no idea what that's actually meant for, haven't actually seen it ever get used for anything, wonder if 2SP or maybe OR2Xbox had some kind of intro/attract mode that would play through some level?
For button prompt switching I might try looking into #172 soon, iirc we have code that can override the texture-replacements already, so we could get it to use textures/xbox/4D5307E6_32x32 instead of just loading textures/4D5307E6_32x32, just need to add some detection to setup those overrides for each type (and probably GUI/INI option to override the detection too)
but some kind of indicator that there's a lobby up from the main menu would be useful. Even just a little green light.
Hm, could probably have the overlay check the clarissa page on launch and let you know if any server is up, maybe could also have it check the page every minute or so and alert when new lobby appears too, with some kind of fly-by or something (kinda like steam achievements popping up from the corner), if server checks were added I'd guess we can probably override some of the game UI strings with the server count as well.
Added some stuff for server notifications in https://github.com/emoose/OutRun2006Tweaks/actions/runs/12264780057
It's pretty early code though so could have some issues there, maybe need to look into better error handling for things like server being down.
One neat thing is when you start a server yourself & its reachable, you'll get a notify about it a few seconds later, wonder if that could be turned into some way of letting people know if their ports aren't setup right...
Some todos:
- ~~handle game startup properly (atm if there were 10 servers up, when you start game you'll get 10 notifys since it hadn't seen any prior)~~
- adjust timings, default is 10s per server check atm, might cause a lot of bandwidth usage though
- option to hide during online races?
Neat, although now that the overlay has functions side from finding LoDs, I suppose the mouse can be hidden again by default until it can be turned on at will when the menu opens.
Menu Timer On / Off for 2SP mode probably?
Got a basic course editor working:
Can edit the courses in normal OR mode, afaik it should be possible to have it jump between different sections as well, so could have endless modes where it loops to the start, or some kind of trick mode where wrong turns take you back a step, not really sure how to make the UI for that though...
Pushed code for it at https://github.com/emoose/OutRun2006Tweaks/actions/runs/12312827568
To use just open overlay on main menu, enable checkbox + edit as you like, then start OutRun2/2SP mode in C2C to begin - editor should also let you edit the stages as you play too, but the bunki signs don't always seem to update for some reason. (didn't try O2SP arcade out yet, hopefully would still work with it though)
Not really sure if every stage will work properly in each slot, I know only the normal end-stages have goal bunkis setup for them, editor will try to use those goal-bunkis if the level had them, but if it doesn't then it should just use normal highway bunki.
Score/ghost uploads should be disabled when course is edited too (if anyone sees an upload prompt while playing with this let me know!), might need to look into online lobbies and force-disable it there as well. (E: might also need to look into local-ghosts too...)
Could probably add something to share codes for them too, some text box in the editor where you can copy/paste them (online lobby name does have 16 characters, which would just let us fit a 15-track course inside, hm...)
Oh damn! At this rate we won't need Howard's course editor to mess around with track order. I know that endless is possible since I've done it before, and there's also an unused bunki with a palm tree that'll crash your game if you try to exit through it. A randomizer that pools from all 30 (+2 night/dusk stages) stages would be neat, too.
When I tried modified track orders online, it was possible for anyone who didn't have the edited file to play the same tracks (even mixed), but it caused desync. Everyone had to have the same file to play on the same tracks (dusk/night don't work and will load as normal if you don't) and not desync.
I could safely say that porting Daytona and Scud courses are possible then...?
I could safely say that porting Daytona and Scud courses are possible then...?
Nah, that's still a long ways off I think. We haven't actually injected any new 3D assets. If we can manage to do something like swapping a car or NPC model, then we'll be getting closer.
Did manage to port skybox model from C2CXbox before but only because the formats were pretty much identical, OR2Xbox used an earlier model format which is missing some data C2C needed iirc, maybe possible to recreate it eventually though.
A randomizer that pools from all 30 (+2 night/dusk stages) stages would be neat, too.
Oh good idea, added a menu to let you pick sets to use
it was possible for anyone who didn't have the edited file to play the same tracks (even mixed), but it caused desync. Everyone had to have the same file to play on the same tracks
I guess online probably only sends over the starting stage # + which script file to use, so others can play first stage fine but then don't know what the next one should be, really too bad it doesn't send the full script over (track list is only like ~2KB...)
From what I remember reading in the Hacking Outrun thread by a dev, there's a level table, but it needs to be expanded somehow if you wanted to hack in new levels without replacing existing ones. After that, the imported levels need to have starting positions coded in as well (though maybe that can be copied over from the Xbox version?).
About this last UI screenshot, can you try to recreate that courses tree in vertical? Instead from left to right, from top to bottom. I know that it's more intuitive what you did visually because of how the game displays the trees in its menu, but vertically it will take less space than horizontally and will work better in low resolutions (no horizontal scroll).
And let me as you, some tracks are not named as they are in the game, I suggest you to keep the same name that is in the game instead of changing to its real world name, it can confuse users.
About the share code, can you add a button that copy the code without the need of selecting all characters? This gives a better UX and accessibility if for someone is playing with a joystick only. You don't need to do it, its just a suggestion. Another cool one is if we could scan a QR Code, the smartphone would copy the text and we could paste it in Discord channel. I'm just brainstorming...
Hm I'll look into vertical view, the selection boxes being horizontal could make it a bit messy though.
The names are just from the game EXE internal list atm, will be making a list with the actual names eventually.
Sure can add a clipboard button (already added a different copy-to-clipboard button in the draw-distance window, so not sure why I forgot that lol)
Looks like imgui does have a node-editor library, could probably make some neat track lists with something like that:
That's just a mockup atm, maybe having something like that in an overlay is a bit overkill though lol, would probably be better as a standalone tool.
Nodes are great but I think they are quite advanced to be used in a game, specially if they are using controllers and wheels, LOL. It may have some use though, like you said, in an editor. Let's think about it.
I tried out a random set, seems like something flags certain tracks as the finish line and breaks it. Metropolis breaks here. I don't think I ever encountered this issue with Howard's course editor (which I think just swapped the addresses around in the bin files).
8-29-38-2E-1C-0-1F-D-41-10-A-C-32-40-11
I'll take a look soon, did you use OR2/2SP from C2C menu to start the course or was it a different mode?
I'll take a look soon, did you use OR2/2SP from C2C menu to start the course or was it a different mode?
C2C, Outrun, OR2.
Ah might have found it, that used metropolis id for the bunki, metropolis is usually an end-goal so that had a goal-bunki instead, thought that goal-bunkis were under a different set of bunki ids but guess not
Should be fixed in https://github.com/emoose/OutRun2006Tweaks/actions/runs/12318096710
Very quick and dirty node editor:
You can drag+drop the lines to change which slot they connect to, loops seem to work in game (games minimap even seems to handle it fine)
Might be able to have more than 15 slots as well (maybe could have a full 30-stage world-tour mode lol), but I need to redo the node editor code for that
Here's a build: c2c-node_edit-0.1.zip Extract to your C2C\Scripts\bin\ folder and run it, should then load data from csc_data_2.bin, make any changes and press S to write them to file. Probably won't work with other script files since they can have other data inside them, haven't added any parser for the other stuff yet.
For reference, here's what an endless course chain would look like in the original course editor. Stage 14 is where you'd make the loop choice. I would also include an option to backup and restore the original bin files for undoing changes.
With the latest tweaks from this issue, I get these white borders around the UI. It starts just after it boots, at the logo and intro screen.
I tried to disable ReShade but it didn't effect it. I tried with a fresh tweaks install and same thing happened, so I downgraded to the stable version and voiola.
I also can't drag and drop to reorganize the Notification menu. The other menus I can.
Are UIScalingMode & UILetterboxing both set above 0?
The overlay did have a minor issue with the letterboxing before but thought I'd fixed that.. does setting [Overlay] Enabled = false affect anything?
E: maybe check the .log file and make sure UIScalingMode/Letterboxing are both above 0 in there too.
We tested share codes online, works fine as long as everyone applies the same code. Haven't tested if it works with only the host, but it'll probably desync. So if you can figure out a way to automatically apply it to the other users (and then remove it when they leave), it'll be perfect.
Are UIScalingMode & UILetterboxing both set above 0?
The overlay did have a minor issue with the letterboxing before but thought I'd fixed that.. does setting [Overlay] Enabled = false affect anything?
E: maybe check the .log file and make sure UIScalingMode/Letterboxing are both above 0 in there too.
Below my INIs and LOG. And yes it is all set to 1 in the INIs. OutRun2006 Coast 2 Coast INI TWEAKS.zip
Another bug: The Server Notification window doesn't save or ignore "Hide when on Online Races".
EDIT: I didn't test the Overlay false, I will check it.
Yeah I still need to find the bit in memory that says when you're connected to a lobby online, if you use the "Any Race" setting it should hide them while in-game though.
When Overlay is set to False the bug is gone.
Hm kinda strange, the overlay draws on top of the letterboxing, but seems that's making it clear the letterboxes for you... Are you using anything like dxvk / reshade / dgvoodoo with it atm? Also which GPU do you have? E: also, do you know if any of the earlier overlay builds still had letterbox working?