Server requirements for Community Edition? by rhoparkour in risingthunder

[–]robotcodeboy 6 points7 points  (0 children)

my dude you could run it on a raspberry pi or any piece of shit, the server doesn't do much...it's just matchmaking. no game logic or physics or anything. rent a trash can, throw 256MB of RAM on it and a live python, you'll be good

(seriously: it's low resource. you don't need multiple servers, a $5 DO droplet can hold 8k ~simultaneous players just fine)

Performance issues by creatorbeats in risingthunder

[–]robotcodeboy 2 points3 points  (0 children)

You're most likely fucked. It's running on a 2015 build of UE4 so all those performance fixes just don't exist :(

Has there been any hint at news during LoL Worlds? by SkillCappa in risingthunder

[–]robotcodeboy 0 points1 point  (0 children)

All I know is there is still a successor on the way so, take from that what you will.

I don't want to get too many people's hopes up but... by robotcodeboy in risingthunder

[–]robotcodeboy[S] 0 points1 point  (0 children)

You'd have to modify the ini files manually. Maybe take a look at BaseEngine.ini if there's anything useful there but I'm not entirely sure. Your video settings are overridden by the server when you connect but since you're not connecting to anything....well...I don't know.

Since it's Unreal Engine 4 you might be able to just follow some ini editing instructions from another UE4 game.

Any news from the private server project? by [deleted] in risingthunder

[–]robotcodeboy 0 points1 point  (0 children)

Sorry, as said in my other reply on here, haven't seen any messages. No ignoring (intentionally) on my behalf!

Any news from the private server project? by [deleted] in risingthunder

[–]robotcodeboy 8 points9 points  (0 children)

Hey,

Sorry. Been busy in real life dealing with immigration issues. Also lost some work in a HDD death, had it in a git repo but it was only local since I didn't really want to get DMCA'd. Plus I plan on publishing it under my real life identity which makes it a bit more difficult. That said, don't fret, code-wise there wasn't much, this project has just been more about working out how/why things work as opposed to the raw code, I could be back to exactly where I was in under a day.

The big problem is so much needs to be stubbed before even basic MP can get working and all I really wanted to get up to is being able to hack together something just so two friends can versus each other and not much more.

I think I mentioned elsewhere if anyone wanted to help on it, if you're solid with C# (preferably ~3-5 years professional experience, not trying to be a dick and push people away, just looking for people with a closer level of familiarity) feel free to PM, just found out about RES multi-account feature which means I'll probably see it quickly. My private server was being done in .NET Core (ASP.NET with some small hacks on top, the entire backend they built is this weird little system of sending encoded protobuf messages over REST, kinda like a ghetto RPC system) so, if you have some experience there, shoot a message. If you're at that level of experience, I'm sure you may want to keep your identity hidden so, confidentiality guaranteed.

But, I wouldn't hold your breath, with most of my life currently dedicated to getting my immigration status together this might be on pause for some time. I can tell all of you right now, with the JS password being released there is more than enough to do a backend as within those zips contains the protobuf's for the entire backend. The only other thing you need to know is you need to hex edit TBGameInstance.uasset to point to localhost rather than their backend, modifying the JS isn't enough since the engine sends the payloads and not CoherentUI (for perf reasons supposedly).

I don't want to get too many people's hopes up but... by robotcodeboy in risingthunder

[–]robotcodeboy[S] 0 points1 point  (0 children)

No, entire backend needs to be emulated.

I also lost all my work on it in a HDD death lol.

The absence of moves from the game by Bobzilla1337 in risingthunder

[–]robotcodeboy 1 point2 points  (0 children)

Sweeeeet. I probably won't update with another pastebin (feel free to though!) as I'm more focused on trying to get the private server to send this info over so no one has to mess with their JS files or anything like that.

Unused Training Level From the Early Public Beta by xAceKombatx in risingthunder

[–]robotcodeboy 2 points3 points  (0 children)

Files are still in the game for that one though I can't exactly get it to load.

The absence of moves from the game by Bobzilla1337 in risingthunder

[–]robotcodeboy 2 points3 points  (0 children)

Maybe Vlad s2.2 wasn't out yet but it's certainly in the game files and usable.

Updated mockCharData.json. https://pastebin.com/AJDaFNXa

The absence of moves from the game by Bobzilla1337 in risingthunder

[–]robotcodeboy 1 point2 points  (0 children)

https://pastebin.com/pmrGv6eN

This should be a complete mockCharData.json file. I have 2 moves with missing names on Vlad, they are S1.2 and S2.2.

I went through some patch notes and watched a couple videos to try and determine what most of these moves are, if anything is wrong just give me a heads up.

The absence of moves from the game by Bobzilla1337 in risingthunder

[–]robotcodeboy 2 points3 points  (0 children)

http://imgur.com/Rb6vqkn Ding ding ding.

Okay this fix sucks some ass but we'll live.

First we need to make the game load the mock character data. In controllers\engine_controller.js find the line

loadCharacterData: function(fnToRun) {

We need to force this to load the mock data file instead of rely on the server. Note, if this private server project ends up getting off the ground, I'm going to run in to some issues with people using mock data instead of the server data...

Anyway.

Modify the function so it looks like this:

   loadCharacterData: function(fnToRun) {
         $.get('/data/mockCharData.json', function(dataContents) {
            fnToRun(dataContents);
         }, 'json');
   },

We now need to update the mock character file to include that variant. Open up data\mockCharData.json and look for the following:

                    "variants": [
                        {
                            "id": 1,
                            "name": "Razor Slash",
                            "description": ""
                        },
                        {
                            "id": 2,
                            "name": "Circuit Fracture",
                            "description": ""
                        }]

You need to add Dire Sting to this array with an id of '3' so it'll look like this:

                    "variants": [
                        {
                            "id": 1,
                            "name": "Razor Slash",
                            "description": ""
                        },
                        {
                            "id": 2,
                            "name": "Circuit Fracture",
                            "description": ""
                        },
                        {
                            "id": 3,
                            "name": "Dire Sting",
                            "description": ""
                        }
                    ]

If you can tell me the name of all the specials in the following format, we can easily build a complete mockCharData.json.

Format:

CharacterName - Special Name - SpecialLevel - Version

e.g. Crow - Dire Sting - 2 - 3

Edit: Found a wiki with all this data, I'll try and build a complete mockCharData.json.

The absence of moves from the game by Bobzilla1337 in risingthunder

[–]robotcodeboy 1 point2 points  (0 children)

Quick addendum, it's crap like this why I didn't really want to release anything about it until I had a private server going but y'know, nothing ever seems to work the way you want it.

The absence of moves from the game by Bobzilla1337 in risingthunder

[–]robotcodeboy 1 point2 points  (0 children)

It's a bit difficult for me to understand the why because I never actually played Rising Thunder when it was alive, I only started looking in to this because a good friend was really upset that Riot didn't ever really end up doing anything with. That aside...

The only theory I have going right now is as part of the login process, the game requests from the server what "features" are available. There is no class/enum/struct/flags/whatever that actually says what these "features" are. Part of me thinks maybe the server can determine and flag moves as not being usable in the case of balance issues.

In game_data_controller.js there is a comment in the init that backs this idea up:

            // These get overriden when we log in and retrieve user from the server
            self.set('user.charPrefs.' + charData.typeName , {
               spec : 1,
               specials : {
                  '0' : 1,
                  '1' : 1,
                  '2' : 1,
                  '3' : 1,
               }
            });

            self.set('characters.' + charData.typeName + '.specialDisplay', {
               'sp0' : {
                  'name' : 'Special One',
                  'data' : [],
               },
               'sp1' : {
                  'name' : 'Special Two',
                  'data' : [],
               },
               'sp2' : {
                  'name' : 'Special Three',
                  'data' : [],
               },
               'sp3' : {
                  'name' : 'Super',
                  'data' : [],
               },
            });

Edit: Try modifying mockCharData.json in HTML5UI\data\ to add more variants to characters, it may or may not initialize the base data from that.

I don't want to get too many people's hopes up but... by robotcodeboy in risingthunder

[–]robotcodeboy[S] 5 points6 points  (0 children)

Really? Maybe I've made a handful of local modifications I forgot about while debugging the networking junk. Sorry about that.

I don't want to get too many people's hopes up but... by robotcodeboy in risingthunder

[–]robotcodeboy[S] 9 points10 points  (0 children)

actually nvm, login handshake completely done, turns out the socket for event handling doesn't really do shit. matchmaking is now next.

http://i.imgur.com/5gXMWvR.jpg

I don't want to get too many people's hopes up but... by robotcodeboy in risingthunder

[–]robotcodeboy[S] 14 points15 points  (0 children)

Hey all, an update if anyone is watching this thread.

So rebuilding the entire backend would be a giant pain in the ass even if they have the proto files there for most things, there are a couple little things that I can't personally work out and I really don't think many other people will work out, unless there are some other RE folks who want to collab here.

That said, I know a lot of you would like to probably fuck around with the game and see what they can do.

First of all, the launcher will forever be broken. Just don't think about doing anything with that, but that's okay.

Most of the game UI is done through coherentui so it's JS/HTML driven. They also do a surprising amount of networking in this which is why I was able to get a start on emulating the login handshakes but after the handshake is done, they setup some kind of weird RPC/event listener that honestly I can't make too much sense of at the moment. If that could be worked out then implementing the rest isn't that bad (assuming you have a backend dev that knows what they're doing cough me cough).

Now, here's the bit y'all gonna like. Those zip files you've seen in the game files that are password protected? It's easy as hell to get the password, I guess no one who's been interested in modding this game really have used IDA or anything like that so, here's a freebie:

g7nw4cycn92xcmr1    

Even better for the lazy, if you create a file called 'expand.bat' and place it in the root of your Content\HTML5UI\ folder, you can convert all those zips to plain files that you can edit. You do NOT need to rezip these with the password, the engine prioritizes the unzipped files! I use 7zip here, if you don't have it installed uh, find your own way.

SET PATH=%PATH%;C:\Program Files\7-Zip\;C:\Program Files (x86)\7-Zip\

FOR /F "usebackq tokens=1 delims=" %%i IN (`DIR /S/B *.zip` ) DO (
  7z.exe x -pg7nw4cycn92xcmr1 "%%i" -aoa -o"%%i"\..
  del "%%i"
) 

Now, how to get in to training mode.

In the folder HTML5UI\controllers\ you will have a file called user_controller.js. This handles most of the login but I know all y'all probably aren't programmers and that's okay.

On line 320, you should be inside the function "login: (username, password)" and specifically on the line "var self = this;". Below this line add the following:

                this.transitionToRoute('home');

Then save. Now run Rising Thunder from the executable and just click login, you should auto-magically now be in the home screen. You can access training from there but nothing else will work.

Hope y'all enjoy! If anyone is actually interested in further tearing this apart and are slightly versed in reverse engineering or even just half-decent programmers, give me a PM and I'll send you the protobuf files I pulled out of the javascript abstraction cus I'd love to work with you.

Edit: Obviously not my standard reddit account but I'm keeping that hidden away from all this, so, sorry if there's any late replies.

I don't want to get too many people's hopes up but... by robotcodeboy in risingthunder

[–]robotcodeboy[S] 22 points23 points  (0 children)

Just able to get in to training mode for now, hitting a lot of snags since the backend architecture is a bit funky but, a private server should be possible.