Rollcage Extreme
#1
http://steamcommunity.com/groups/rollcag...621489272/

Thanks to the likes of Dups and Potterman's recent involvement with the Rollcage games, they managed to track down one of the original Psygnosis developers (with the aid of Stu, apparently, who was once a poster on gorcx.net) who has taken on the task of rebuilding and improving the Rollcage games to play well on modern computers, to fix outstanding bugs (such as choppy frame rates and graphics glitches), and to implement new features if possible.

Having progressed substantially on Rollcage Redux, Rob has now turned his sights to simultaneously updating and fixing Rollcage: Stage II, to bring it in-line with its prequel counterpart and that means that everybody wins! Insofar he plans two projects, the first of which is hereto called Rollcage Extreme - Stage II's version of Rollcage Redux - and hereafter called Rollcage Extreme. The second project, unnamed as of yet, will be ambitious - the plan to integrate the best of Rollcage 1 (handling, car stats, weapon tweaks) into Stage II, because Stage II is for pussies. Smile


Again, like Rollcage Redux I will refrain from providing direct download links until Rob feels progress is substantial enough to allow a 'public' release. However, check the Steam forums if you're interested in learning or playing.

___________

Rollcage Extreme

Current Change Notes

v1.1.0 (original release) (24th August 2014
  • Fixed rendering clipping bug which left odd pixels on top and left edges of the screen.
  • Fixed analog joystick axis mapping to controller inputs.
  • Fixed a handful of general bugs exposed by a modern compiler.
  • Fixed replay file being deleted before it was being used,
  • Fixed time warp rendering error.
  • Fixed input bug with some polled devices not returning state information.
  • Fixed the end-of-game statistics rendering to fit screen correctly.
  • Added windowed mode which smooths out the rendering on most machines.
  • Auto-select the resolution / bit depth based on the current desktop setting.
  • Added display page-flipping option (improves display smoothness on some machines).
  • Allowed Alt Tab to function, as well as all the other system keys.
  • New, much more accurate frame timing code for a smoother frame rate.
  • Switched on SSE2 support in the compiler options.
  • Now using a section of the registry to store game settings that isn't protected by Windows.
  • Replay files now stored in a file system location that isn't protected by Windows.
  • Program now reloads itself, rather than a hard-coded exe name, when it restarts the UI.
  • Added a generalised bitmap loader for high-colour textures.
  • Maintain the aspect ratio correctly when rendering loading screens.
  • Added the IAMALAZYBASTARD password to enable all options. This doesn't work the same as Rollcage 1 but instead acts as the 'master cheat', immediately unlocking everything in the game.
  • More conservative CPU usage when the CPU is not required (the physics is locked to 30 FPS).
  • Improved the explosion effect.
  • Improved rain weather effect.
  • Improved the car shadow rendering to help combat the Z fighting issue.
  • Improved the blending characteristics of many of the rendering effects and head-up display.
  • Improved the time warp screen effect to match Rollcage Redux.
  • Newly frozen screen for player being attacked with ice wheels.
  • New mp3/ogg music player.
  • Extended the file-based music playing API to replace more of the CD track playing API, including correct volume setting and random (shuffle) track play.
  • Volume fade on user interface music before game.
  • Improved the rendering of the explosion shock waves.
  • Improved the aesthetic distribution of explosion fragments.
  • Improved the rendering of effects to match the time of day.
  • Improved the rendering of loading screens to avoid lines between different texture pages.
  • Made the undoubled time warp more effective against opponents. It now slows opponents by a minimum of 50% regardless of distance/position.
  • Removed triple-buffering option (not used in a Windowed environment).
  • Removed SIMD and 3DNow assembler vector transform routines - no longer any benefit.
  • Removed a lot of sensitive assembly routines and replaced them with C code. this allows compiler optimisations for modern processors.
  • Removed bump mapping as it was badly implemented, may revisit later.
96.5%
MORE
WUB WUB.
[Image: 54f5c31d9f2ce.gif]
Reply
#2
I did not expect this. I did not expect the Redux version either, but I did not expect him to start on another project while already working on the first.

Someone need to tell him the bump mapping does work. And work good. All he need to do is disable the "modern" (at the time) code, and force the "legacy" (at the time, used only for really old cards) bump mapping method. The fallback bumpmapping (which the fix forces) seems pretty solid for me.
Try systemd. They said.
It'll be just as reliable as init. They said.
It'll be completely bug-free. They said.
Our monolithic windows-approach is far superior to the Unix-approach. They said.
Okay, so the codebase has grown gigantic and no one but our paid group of full-time developers who created it can maintain it and fix bugs... but it'll be fine. They said.
Okay, we'll shove it down your throat whether you like it or not. They said.

I guess it's finally time to look into GuixSD and/or devuan.

Code:
systemd-journald(195): Received SIGTERM.
systemd[1]: systemd-udevd.service has no holdoff time, scheduling restart.
systemd[1]: systemd-udevd.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-udevd.service
systemd[1]: Unit systemd-udevd.service entered failed state.
systemd[1]: systemd-journald.service has no holdoff time, scheduling restart.
systemd[1]: systemd-journald.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-journald.service
systemd[1]: Unit systemd-journald.service entered failed state.
Reply
#3
He was given the patch but I suspect sooner-or-later he'll figure it out and fix it, or you can point this out to him at some point and see whether he sorts it out.

... He's apparently discovered the remnants of Yuri in the game code, too, which is interesting.
96.5%
MORE
WUB WUB.
[Image: 54f5c31d9f2ce.gif]
Reply
#4
That is very interesting, and would explain why yuri is plastered all over the box artwork! Stunned

Speaking of talking to him... for some reason I feel like completely alienated on those steam pages. I just never get around to post there (it's like this with lots of stuff I need to get around doing, lacking the time). I know I should though.

The most active I've been is participating in the online races from time to time. On a random note: I think I do understand why you're not participating. We old-school rollcagers do want to show that we perfect-lap the hell out of every track. And having a disadvantage to perhaps prevent that (like no analogue input) makes one hesitant. For me I can only play good when I'm not tired, which makes those online matches at 9 o'clock completely dreadful.

Another problem with online games is that collisions between cars seems to affect people differently. Last night was great until a turbo challenge on g-force, which only got one proper racing line. While I think my driving was okay, people would ram me to overtake, throwing me to the side without themselves getting any opposing forces. And when I catch up and do the same? I once again get thrown off the track without the opponent even starting to skid. And I was driving as Lenny

I suspect it's with network lag (or some rollcage discriminatory against swedes?), but it was terribly annoying. And then [rant]I noticed another player kept using the shortcut (yes Leon, I saw you)! And since no one was remarking about it I guessed everyone had decided to use the shortcuts again (while I was away), but the moment I steer towards it I get called out for it. So I just stop in the tunnel and go away and floss, and just quit the race when I get back. Guess what I keep hearing? People arguing that my good laptime was because I took the shortcut. It wouldn't bother me so much if it wasn't for someone claiming I actually exited the tunnel. Which never happened. And now people will think I'm a liar for insisting I didn't.[/rant]

And then I got kicked out of the voice chat for broadcasting the original 80's hitchhiker's guide (while trying to connect to the next match)... I regret nothing! Laugh Besides, dups started it by broadcasting some song from frozen. Yup, it's always someone else who starts it and I never lie. Now do people know me good enough to know that that is actually the truth, or will they forever discard anything I say from now on? Tongue

(I really should get a race going when I'm not tired, and show dups who's boss).
Try systemd. They said.
It'll be just as reliable as init. They said.
It'll be completely bug-free. They said.
Our monolithic windows-approach is far superior to the Unix-approach. They said.
Okay, so the codebase has grown gigantic and no one but our paid group of full-time developers who created it can maintain it and fix bugs... but it'll be fine. They said.
Okay, we'll shove it down your throat whether you like it or not. They said.

I guess it's finally time to look into GuixSD and/or devuan.

Code:
systemd-journald(195): Received SIGTERM.
systemd[1]: systemd-udevd.service has no holdoff time, scheduling restart.
systemd[1]: systemd-udevd.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-udevd.service
systemd[1]: Unit systemd-udevd.service entered failed state.
systemd[1]: systemd-journald.service has no holdoff time, scheduling restart.
systemd[1]: systemd-journald.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-journald.service
systemd[1]: Unit systemd-journald.service entered failed state.
Reply
#5
Dups is weird.

But yeah, it's not that I 'perfect-lap' the game but just that I can't drive with a d-pad and most of the races I've played online I didn't even finish since I spent half of it driving in circles for whatever reason. The day the analog works properly is the day I kick their asses.
96.5%
MORE
WUB WUB.
[Image: 54f5c31d9f2ce.gif]
Reply
#6
(2014-08-31, 10:42 AM)K.Mac Wrote: The day the analog works properly is the day I kick their asses.
Cool


Oh, btw: I've made one last update (in the master branch), which I'd love to see some testing/abusing of (per-axle angular drag coefficients). I think there will be a while until I can get any more work done on it, since I now start studying again. Hopefully it works as it should, otherwise I need to take a closer look at the calculations (see if the right coefficients are used at the right place).
Try systemd. They said.
It'll be just as reliable as init. They said.
It'll be completely bug-free. They said.
Our monolithic windows-approach is far superior to the Unix-approach. They said.
Okay, so the codebase has grown gigantic and no one but our paid group of full-time developers who created it can maintain it and fix bugs... but it'll be fine. They said.
Okay, we'll shove it down your throat whether you like it or not. They said.

I guess it's finally time to look into GuixSD and/or devuan.

Code:
systemd-journald(195): Received SIGTERM.
systemd[1]: systemd-udevd.service has no holdoff time, scheduling restart.
systemd[1]: systemd-udevd.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-udevd.service
systemd[1]: Unit systemd-udevd.service entered failed state.
systemd[1]: systemd-journald.service has no holdoff time, scheduling restart.
systemd[1]: systemd-journald.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-journald.service
systemd[1]: Unit systemd-journald.service entered failed state.
Reply
#7
(2014-08-31, 07:01 AM)Slinger Wrote: I suspect it's with network lag (or some rollcage discriminatory against swedes?), but it was terribly annoying. And then [rant]I noticed another player kept using the shortcut (yes Leon, I saw you)! And since no one was remarking about it I guessed everyone had decided to use the shortcuts again (while I was away), but the moment I steer towards it I get called out for it. So I just stop in the tunnel and go away and floss, and just quit the race when I get back. Guess what I keep hearing? People arguing that my good laptime was because I took the shortcut. It wouldn't bother me so much if it wasn't for someone claiming I actually exited the tunnel. Which never happened. And now people will think I'm a liar for insisting I didn't.[/rant]

Well, actually Leon wasn't a player, it was a bot. As it's a peer to peer system (but it strangely also happens in host/client mode ??), you can be for example disconnected to player B, but not disconnected to the host. So you don't see player B, and he's replaced by a bot. This bot is then a kind of "ghost bot" ; only you can see him, because the others don't see it.

But, as I saw there was a Leon in this race, it's more likely than someone disconnected. Anyway, if you see a player replaced by the name of his car, then it's a bot. So as a bot he will take shortcuts.

So actually, I think that as you saw that Leon couldn't stop using the shortcut, you took it as well. But for being in the race, I know that I saw no player taking the shortcut. Neither did we agree on "everyone take shortcuts now"

But don't worry, we won't harass you like "hey it's the guy who took the shortcut", or maybe Dups will Tongue
___________________________________________________________________________________
Rollcage steam group to plan multiplayer games, check it out -> http://steamcommunity.com/groups/rollcage
Reply
#8
Ah, that explains a lot. I think it happened when we were doing two parallel races: One of the players on my side was replaced by an ai. Only at the end did I notice I'd not been competing with a human over first place.

As for the shortcut: As long as you don't think I took it, then it doesn't bother me. I initially planed to take the shortcut out of try-hard-cheat-back-rage stuff before someone quickly called me. I just gave up, stopped in the tunnel and went away to floss (brushing teeth ftw! :-p), but what did upset me was that someone claimed I'd exited the tunnel. I just don't like it when people start claiming stuff like that.

As for dups, I know he will. But I don't care. I'll harass him back. What's he gonna do? Kick me out of voice chat again? Oh. Big Grin
Try systemd. They said.
It'll be just as reliable as init. They said.
It'll be completely bug-free. They said.
Our monolithic windows-approach is far superior to the Unix-approach. They said.
Okay, so the codebase has grown gigantic and no one but our paid group of full-time developers who created it can maintain it and fix bugs... but it'll be fine. They said.
Okay, we'll shove it down your throat whether you like it or not. They said.

I guess it's finally time to look into GuixSD and/or devuan.

Code:
systemd-journald(195): Received SIGTERM.
systemd[1]: systemd-udevd.service has no holdoff time, scheduling restart.
systemd[1]: systemd-udevd.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-udevd.service
systemd[1]: Unit systemd-udevd.service entered failed state.
systemd[1]: systemd-journald.service has no holdoff time, scheduling restart.
systemd[1]: systemd-journald.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-journald.service
systemd[1]: Unit systemd-journald.service entered failed state.
Reply
#9
If you can ask him if he can add an ability for modding to the builds. This may be alot of work, but He could possible use the ASSIMP library to pull it off ( which Is what I did for my game to bypass XNA's model pipeline and allow support for OBJ, FBX, even QUAKE models to be loaded ). This is also asking even more than I should - but LOD groups that can be defined on a per mesh basis would be great. Because... imagine Rollcage HD.... just because....

Would be nice if I could create high res models for the original games or even create new tracks for them when I need a break from my own projects....
Reply
#10
(2014-09-25, 07:34 PM)CodieMorgan Wrote: If you can ask him if he can add an ability for modding to the builds. This may be alot of work, but He could possible use the ASSIMP library to pull it off ( which Is what I did for my game to bypass XNA's model pipeline and allow support for OBJ, FBX, even QUAKE models to be loaded ). This is also asking even more than I should - but LOD groups that can be defined on a per mesh basis would be great. Because... imagine Rollcage HD.... just because....

Would be nice if I could create high res models for the original games or even create new tracks for them when I need a break from my own projects....

I don't think Rob is able to do those sorts of things, because for one thing he has no access to the raw data for the game models and thus what he's able to actually change is limited in that regard. He -has- added texture modification support and HD textures for the models is a possibility, but actually modifying the game models themselves is currently impossible. =/
96.5%
MORE
WUB WUB.
[Image: 54f5c31d9f2ce.gif]
Reply
#11
But that's just the thing, isn't it? He's got access to the whole source code - he doesn't need the original data!

What he could do, is just add a new set of rendering code, which loads models and textures, and renders them separately to the scene after the original rendering code is done. Okay, there's just one catch: he'd need to change the old rendering code to NOT perform perspective calculations on the cpu. Basically, he need to get it to actually use (or at least write proper data to) the Z buffer. Once that's done (and assuming there's no transparency in the game), new models can be rendered to the "finished" scene and just blend in naturally. Of course he'd also need to render the HUD after the new 3d (and keep track of what light sources to use).
Try systemd. They said.
It'll be just as reliable as init. They said.
It'll be completely bug-free. They said.
Our monolithic windows-approach is far superior to the Unix-approach. They said.
Okay, so the codebase has grown gigantic and no one but our paid group of full-time developers who created it can maintain it and fix bugs... but it'll be fine. They said.
Okay, we'll shove it down your throat whether you like it or not. They said.

I guess it's finally time to look into GuixSD and/or devuan.

Code:
systemd-journald(195): Received SIGTERM.
systemd[1]: systemd-udevd.service has no holdoff time, scheduling restart.
systemd[1]: systemd-udevd.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-udevd.service
systemd[1]: Unit systemd-udevd.service entered failed state.
systemd[1]: systemd-journald.service has no holdoff time, scheduling restart.
systemd[1]: systemd-journald.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-journald.service
systemd[1]: Unit systemd-journald.service entered failed state.
Reply
#12
(2014-09-30, 06:30 PM)Slinger Wrote: But that's just the thing, isn't it? He's got access to the whole source code - he doesn't need the original data!

What he could do, is just add a new set of rendering code, which loads models and textures, and renders them separately to the scene after the original rendering code is done. Okay, there's just one catch: he'd need to change the old rendering code to NOT perform perspective calculations on the cpu. Basically, he need to get it to actually use (or at least write proper data to) the Z buffer. Once that's done (and assuming there's no transparency in the game), new models can be rendered to the "finished" scene and just blend in naturally. Of course he'd also need to render the HUD after the new 3d (and keep track of what light sources to use).

The problem is more that even though he has the source code, he has the source code for the game executable itself. Things like the models are basically 'locked' and can't be changed. Maybe you could jump on the Steam thing and ask him yourself? It's hard for me to explain but he's stated himself that adding/changing anything related to tracks and cars except for textures is impossible. He can't even fix the paths for the AI/leader missile.

And why did this get unstickied? O_o
96.5%
MORE
WUB WUB.
[Image: 54f5c31d9f2ce.gif]
Reply
#13
I have no idea why this got unstickied. I think it's happened before - but that was after editing title/first post. I think the forum just got a mind of its own...

As for what you said: Yes, he would not be able to modify the original assets. But what I suggest is create a whole new, separate, rendering system. It could load models and textures from external files, store them in new buffers on the graphics card, and render them separately from the original rendering code. The only caveats I can think of (so far) is:
1) It would take some work (a lot?)
2) The depth buffer needs to be filled by the original rendering code (instead of the current situation where all triangles are rendered on a flat plane in front of the "camera")
3) Reflections on flood zone would not show the new models

This way a new car model would be rendered by remove the old car from the old rendering cycle and add the new model/render it after everything else. Not sure it'd be worth his time to do all that, though. But I'm pretty sure he's already aware of this possibility, so I don't think I'll bother him with this. Wink

Also, I expressed this to potterman, but realized that I have probably never said it to you either: If you want access to the site CMS, forum admin pages, or just about anything, just let me know! I trust you completely with this project. And don't decline out of fear to mess things up: I'm running nightly backups of all sites+databases, so that's no excuse! Wink If there's anything you'd like to do - be it tweak the site, remove some spammer or push updates to a git repo - you have my full support!
Try systemd. They said.
It'll be just as reliable as init. They said.
It'll be completely bug-free. They said.
Our monolithic windows-approach is far superior to the Unix-approach. They said.
Okay, so the codebase has grown gigantic and no one but our paid group of full-time developers who created it can maintain it and fix bugs... but it'll be fine. They said.
Okay, we'll shove it down your throat whether you like it or not. They said.

I guess it's finally time to look into GuixSD and/or devuan.

Code:
systemd-journald(195): Received SIGTERM.
systemd[1]: systemd-udevd.service has no holdoff time, scheduling restart.
systemd[1]: systemd-udevd.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-udevd.service
systemd[1]: Unit systemd-udevd.service entered failed state.
systemd[1]: systemd-journald.service has no holdoff time, scheduling restart.
systemd[1]: systemd-journald.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-journald.service
systemd[1]: Unit systemd-journald.service entered failed state.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)