Important information: this site is currently scheduled to go offline indefinitely by end of the year.

Beyond: Two Souls - Reversing | Porting (THAT'S ALL FOLKS?)

Programs that are related to this or that game.
Post Reply
Ekey
M-M-M-Monster veteran
M-M-M-Monster veteran
Posts: 1823
Joined: Wed Mar 31, 2010 6:54 am
Has thanked: 92 times
Been thanked: 1058 times

Re: Beyond: Two Souls - Reversing | Porting (UPDATE: SEQUENC

Post by Ekey »

Send me eboot and a few textures.
User avatar
HugoPeters
veteran
Posts: 133
Joined: Thu Apr 03, 2014 9:49 am
Location: The Netherlands
Has thanked: 64 times
Been thanked: 168 times
Contact:

Re: Beyond: Two Souls - Reversing | Porting (UPDATE: SEQUENC

Post by HugoPeters »

Ekey wrote:Send me eboot and a few textures.
Sent a PM, it's still in my Outbox but it should arrive soon. Thanks!
Image

"I'm going to throw my shit at you" —The Great Mighty Poo
_______________________>> check my portfolio I wish the [center] bbcode was turned on
_______________________>> or my twitter
howfie
double-veteran
double-veteran
Posts: 929
Joined: Fri Jul 08, 2011 12:06 pm
Location: Torrance, CA
Has thanked: 10 times
Been thanked: 274 times

Re: Beyond: Two Souls - Reversing | Porting (UPDATE: SEQUENC

Post by howfie »

go ekey! :)
Hamers
beginner
Posts: 21
Joined: Fri Jul 22, 2011 4:39 pm
Has thanked: 21 times
Been thanked: 13 times

Re: Beyond: Two Souls - Reversing | Porting (UPDATE: SEQUENC

Post by Hamers »

HugoPeters wrote:Thanks! The animated objects are handeled as characters. The static scenery is all in one big mesh collection, the "characters" (so also doors, chairs, etc.) can have animation, sounds, etc. They are added by the scene Lua script.
Ah what I suspected. They do build all their scenes in Maya apparently, so it doesn't surprise me they are exported as one big collection.
HugoPeters wrote:The shot that's missing is a bit hard to explain. If you look before the missing shot you see the camera is facing Jodie. Then in the game the shot facing the chief cop comes, and then it's back to Jodie. That shot of Jodie (before / after the cop) is one shot. As you may have noticed, the road part starts later in my version than in the game. That is because at the end of the scene you can see the camera shot that was the missing one. That one works as a "sub shot", it appears over another shot. Since I haven't implemented that yet, you can see missing shots here and there that then appear after the scene is over.
Makes a lot of sense.
HugoPeters wrote:The street car scene is a separate area. The chapter "Broken" has one scene and three areas (POLICE_STATION, POLICE_STATION_ROAD and POLICE_STATION_BREAK). In the video I did it so that it loads the first and lasts area, but only activates the first one for all but the last "movie" (that's how one part of a sequence is called internally). When the last one starts (the "Too Late" part), it deactivates the first area and activates the last one. I had some trouble loading in the road part so I didn't bother fixing it before the video :P
Here is the code to load and play the movies/areas, so you can see just how hacky it is xD http://pastebin.com/67Lns7mU

Code: Select all

if (i == 7)  // TooLate
I see what you did there :D

EDIT: Hopefully someone figures out the texture format and wow at dat lua output. I'm not mistaken in the assumption that "fAidenLookAt" is an actual function that is probably a part of their node based scripting system which the level designers used to create the scene scripting?
Image
User avatar
HugoPeters
veteran
Posts: 133
Joined: Thu Apr 03, 2014 9:49 am
Location: The Netherlands
Has thanked: 64 times
Been thanked: 168 times
Contact:

Re: Beyond: Two Souls - Reversing | Porting (UPDATE: SEQUENC

Post by HugoPeters »

Hamers wrote:
HugoPeters wrote: EDIT: Hopefully someone figures out the texture format and wow at dat lua output. I'm not mistaken in the assumption that "fAidenLookAt" is an actual function that is probably a part of their node based scripting system which the level designers used to create the scene scripting?
fAidenLookAt is a Dynamic Communicator, which means the function itself is stored elsewhere, and by adding attributes, events and actions they can call this script in a "tool-efficient" manner.
The normal Communicators have their scripts, attributes, events, etc. stored in the executable, while these are created on runtime.

fAidenLookAt is defined in the GameManager:

Code: Select all

-- Dynamic COM for fAidenLookAt function
if (QDT.fAidenLookAt == nil) then
	local nDynType = CreateDynCommunicator("fAidenLookAt", 4411)
		AddDynAttribute(nDynType, "ANAEL_GAMEPLAY", "AnaelGameplay", 0)
		AddDynAttribute(nDynType, "float", "BlendDuration", 0)
		AddDynAttribute(nDynType, "string", "BonesName", 6)
		AddDynAttribute(nDynType, "SCRIPT_ENTITY_ABC", "EntityToLook", 0)
		AddDynAttribute(nDynType, "bool", "StopAtEnd", 0)
	RegisterDynCommunicator(nDynType)
end
This is how I implemented the kernel's main way of dealing with functions, etc.:
Image

It works pretty well!

And I also already implemented the whole Dynamic Communicator thing:
Image
Image

"I'm going to throw my shit at you" —The Great Mighty Poo
_______________________>> check my portfolio I wish the [center] bbcode was turned on
_______________________>> or my twitter
User avatar
HugoPeters
veteran
Posts: 133
Joined: Thu Apr 03, 2014 9:49 am
Location: The Netherlands
Has thanked: 64 times
Been thanked: 168 times
Contact:

Re: Beyond: Two Souls - Reversing | Porting (UPDATE: SEQUENC

Post by HugoPeters »

Kernel!

Here's my first real-world test of my kernel interface.
The scripts playing the audio are copy-pasted from the game!

https://www.youtube.com/watch?v=CtRO0hcNOE4
Image

"I'm going to throw my shit at you" —The Great Mighty Poo
_______________________>> check my portfolio I wish the [center] bbcode was turned on
_______________________>> or my twitter
User avatar
HugoPeters
veteran
Posts: 133
Joined: Thu Apr 03, 2014 9:49 am
Location: The Netherlands
Has thanked: 64 times
Been thanked: 168 times
Contact:

Re: Beyond: Two Souls - Reversing | Porting (KERNEL PART ~1~

Post by HugoPeters »

OMFG
I made a Luac bytecode converter for Beyond's chunks, the issue was endianness in the end! So I now read in the function, and convert BE ints to LE ints, and also change the floats into doubles.
AND IT WORKS SO I CAN NOW FINALLY EXECUTE BEYOND'S LUAC SCRIPTS :D :D :D
Image

"I'm going to throw my shit at you" —The Great Mighty Poo
_______________________>> check my portfolio I wish the [center] bbcode was turned on
_______________________>> or my twitter
User avatar
HugoPeters
veteran
Posts: 133
Joined: Thu Apr 03, 2014 9:49 am
Location: The Netherlands
Has thanked: 64 times
Been thanked: 168 times
Contact:

Re: Beyond: Two Souls - Reversing | Porting (KERNEL PART ~1~

Post by HugoPeters »

During loading research:

- Disabled caching
- Disabled usage of setup files
- Since I run the game through the ProDG target manager I can change the load speed by changing my ethernet port Speed & Duplex, so set it to 10 Mb/s.

Result:

Image

Image
Image

"I'm going to throw my shit at you" —The Great Mighty Poo
_______________________>> check my portfolio I wish the [center] bbcode was turned on
_______________________>> or my twitter
Hamers
beginner
Posts: 21
Joined: Fri Jul 22, 2011 4:39 pm
Has thanked: 21 times
Been thanked: 13 times

Re: Beyond: Two Souls - Reversing | Porting (KERNEL PART ~1~

Post by Hamers »

Not surprised in the slightest lol Poor console games rely a lot on caching and fast streaming of assets on the fly. Still funny to see the LODs though xD
Awesome news about the lua functions!
Image
User avatar
HugoPeters
veteran
Posts: 133
Joined: Thu Apr 03, 2014 9:49 am
Location: The Netherlands
Has thanked: 64 times
Been thanked: 168 times
Contact:

Re: Beyond: Two Souls - Reversing | Porting (KERNEL PART ~1~

Post by HugoPeters »

Small update: proper audio streaming has been build!

Image
Image

"I'm going to throw my shit at you" —The Great Mighty Poo
_______________________>> check my portfolio I wish the [center] bbcode was turned on
_______________________>> or my twitter
User avatar
HugoPeters
veteran
Posts: 133
Joined: Thu Apr 03, 2014 9:49 am
Location: The Netherlands
Has thanked: 64 times
Been thanked: 168 times
Contact:

Re: Beyond: Two Souls - Reversing | Porting (KERNEL PART ~1~

Post by HugoPeters »

Kernel Part ~2~!

'Right guys, more shit!

https://www.youtube.com/watch?v=o8HnAjksFMc

I'm getting to a point where I find it extremely difficult to explain what the fuck I'm even doing XD
So I might need to start with stuff like voice overs where I can quickly explain the contexts of everything, but for now I've done it through subtitles.
Image

"I'm going to throw my shit at you" —The Great Mighty Poo
_______________________>> check my portfolio I wish the [center] bbcode was turned on
_______________________>> or my twitter
Hamers
beginner
Posts: 21
Joined: Fri Jul 22, 2011 4:39 pm
Has thanked: 21 times
Been thanked: 13 times

Re: Beyond: Two Souls - Reversing | Porting (KERNEL PART ~1~

Post by Hamers »

HugoPeters wrote:Kernel Part ~2~!

'Right guys, more shit!

https://www.youtube.com/watch?v=o8HnAjksFMc

I'm getting to a point where I find it extremely difficult to explain what the fuck I'm even doing XD
So I might need to start with stuff like voice overs where I can quickly explain the contexts of everything, but for now I've done it through subtitles.
Yeah, seems like this starts to go into the territory where you have to reverse engineer and implement the actual game scripting, which sounds pretty complicated. Good luck man, props to you for keeping at it!
Image
User avatar
HugoPeters
veteran
Posts: 133
Joined: Thu Apr 03, 2014 9:49 am
Location: The Netherlands
Has thanked: 64 times
Been thanked: 168 times
Contact:

Re: Beyond: Two Souls - Reversing | Porting (KERNEL PART ~1~

Post by HugoPeters »

Hamers wrote:
HugoPeters wrote:Kernel Part ~2~!

'Right guys, more shit!

https://www.youtube.com/watch?v=o8HnAjksFMc

I'm getting to a point where I find it extremely difficult to explain what the fuck I'm even doing XD
So I might need to start with stuff like voice overs where I can quickly explain the contexts of everything, but for now I've done it through subtitles.
Yeah, seems like this starts to go into the territory where you have to reverse engineer and implement the actual game scripting, which sounds pretty complicated. Good luck man, props to you for keeping at it!
It's funny, because I've already implemented around 40% of their "kernel"/interface.
I've basically completed the basic environment, and now it's only a matter of making the functions actually do something, I've already passed the hardest part by far.
Image

"I'm going to throw my shit at you" —The Great Mighty Poo
_______________________>> check my portfolio I wish the [center] bbcode was turned on
_______________________>> or my twitter
User avatar
HugoPeters
veteran
Posts: 133
Joined: Thu Apr 03, 2014 9:49 am
Location: The Netherlands
Has thanked: 64 times
Been thanked: 168 times
Contact:

Re: Beyond: Two Souls - Reversing | Porting (KERNEL PART ~2~

Post by HugoPeters »

Choices??

Here's a very, very, VERY early demo of choice paths!
There's dialog audio starting / ending at wrong times, dialog text isn't parsed, and a TON more things wrong, but it kinda gives an idea of how far I am right now.
All the stuff wrong are just minor touch-ups.

https://www.youtube.com/watch?v=lAEm632Ordc

Please keep in mind, what seems like a glitch isn't a glitch, it's just because I haven't implemented this or that yet.
Image

"I'm going to throw my shit at you" —The Great Mighty Poo
_______________________>> check my portfolio I wish the [center] bbcode was turned on
_______________________>> or my twitter
Hamers
beginner
Posts: 21
Joined: Fri Jul 22, 2011 4:39 pm
Has thanked: 21 times
Been thanked: 13 times

Re: Beyond: Two Souls - Reversing | Porting (CHOICE PATHS!?!

Post by Hamers »

Regardless how rough it is, I refresh the thread every day in anticipation of an update :D Really love how you document your progress!
Image
Post Reply