Baldur's Gate tribute video HowTo


This does not pretend to be a tutorial, but since I spend like >100h, I just wanted to share some parts of it.

The toolset

Infinity engine, is the engine created by Bioware and used in Baldur's Gate.
gemRB is an open python implementation of the Infinity engine. It also provides some interesting extras.
NearInifinty is a tool to access and modify some of the assets of the game.
DLTCEP: is a tool that goes deper into asset modification/generation.
Wide screen mod a mod to play with higher and custom resolutions.
VLC to record lossless
Virtuadub to re-encode and pixel perfect scale.


We will have two engines running one inside the other, gemRB which runs a nested Infinity engine and gemRB's own scipting engine. 

Disclaimer. Better not use main install which may be left unusable. Not all the following info comes from me, some from isH or Lynx from gemRB team.

So many extras, sounds like high budget!


Getting Started

It'll be easier if you have a proper savegame with actors, location and so.

Action can be triggered from the two different engines running (notices that each has it's language and limitations):


gemRB

To be able to make my code run I "hacked" the inventory.py in GameFolder\GUIScripts\bg1.

This way, while ingame I just needed to double-press 'i' and the code will run.
    • many calls have a last numerical argument which is the ID of the actor in your party.
    • you can do most of the basics from here. Actions are stacked and each actor has their own, you have to coordinate all of them.
    GemRB.ExecuteString("""MoveToPoint([1780.242])""",1) 
GemRB.ExecuteString("""CreateCreature("SKELET",[2195.2115],7)""",1)
    GemRB.ExecuteString("""ReputationInc(-2)""",1)
    GemRB.ExecuteString("""DayNight(DAWN_END)""",1)

IE Scripting

This is what mainly rules how the ingame behaves

To be able to make code run you need to edit dplayer3.bcs with NI and add:

    IF
        HotKey(K)
    THEN
        RESPONSE #100
        ClearAllActions()
        StartCutSceneMode()
        StartCutScene("file")
    END

Then create a "file.bcs" that you will edit and compile with IE in GameFolder\Override with the following structure:

    IF
        True()
    THEN
        RESPONSE #100
        CutSceneId(Player1)
        Your code goes here
        EndCutSceneMode()
    END

And to execute your code, while in game press k. Notice that you must the have AI enabled (lower right corner).

From here you can do many things. Here are a few real examples, looking into various BCS may inspire you.


The textbox

Strings are assets. To create the strings. In NI you can go to any STREF and change its content by editing. You'll have an ID for every string.



To make them appear use DisplayString(..,ID)",#player talking). Notice that gemRB funcions work with a stack, so the last call will be the first to be executed.



Bonus: to have the narrator I changed the name of a rat to blank in NI and assignet an scriptNam so I can call it.

    GemRB.ExecuteString('DisplayString("ratnarrator",112)', 1) #You must gather..
    GemRB.ExecuteString("""CreateCreature("RAT",[-10.-10],0)""",1)#creates RAT NARRATOR


The acting.

When the skeletons surround the party, making every ~400 skeleton a different CRE or their own scriptname is too painful. For that matter we can code how to behave. In this case in SKELET.CRE you can change al the behaviours to WTASIGHT.BCS and after they are created they will go to the center in this case.

    IF
True()
    THEN
RESPONSE #100
           Enemy()
        MoveToPoint([1500.3500])
    END

Or the soldiers may have randomwalk() for defaut. You can delete that line and the will remain still.



Recording and post production

To record the action lossless vlc was the choice. In capturing device 
VLC - :screen-width=650 :screen-height=550 :screen-fps=30.000000 :live-caching=300
And then convert, selecting a profile that in video "keep original video track". You will the need ffdshow and load the video like this in virtuadub.


There are many things done ingame, but some scenes have special needs. To mix scenes I recorded them over a flat colored map. To do so, you can follow this guide for DLTCEP.

modified stage right before sunset, half original half croma.


Also blood, or enviromental assets can be extracted as .png from NI and be used while video editing. Assets were put together with Flash as well as some animations.


At the end there was more editing than expected, yes.


I could go to maaany more details but better share the result than the tortuous process  .-P


Thanks for watching and please share if you liked !


Cap comentari:

Publica un comentari