FF Logo
Hello Guest | Login | Register
Join us on Discord!
Latest reviews
· [SP] Kava: a Red Faction Pr... 
Reviewed by Uzbek

· RF1 Russian Translation Pac... 
Reviewed by Uzbek

· Crook$ And C@stles 
Reviewed by MysticaL-AceR

· RFU5 - Midwich V5 
Reviewed by dvl_iac

· Br@in$can 
Reviewed by dvl_iac

· DM_C@nnonBaLLzZz 
Reviewed by dvl_iac

· Halloween Pumpkins 1.1 
Reviewed by dvl_iac

· RF Manor 
Reviewed by kerpal

· WMP-Rocky Horror 
Reviewed by kerpal

· RFU5 - Midwich V5 
Reviewed by kerpal

· Catacomb 
Reviewed by Mikelice

· Cyrus Cio Park 2 
Reviewed by Mikelice

· SWA Ghost House 
Reviewed by Mikelice

· WMP-Rocky Horror 
Reviewed by Mikelice

· RFU5 - Midwich V5 
Reviewed by Mikelice

Who's online?
1 user and 61 guests
FactionFiles :: Files :: Red Faction - Maps - Deathmatch :: The Frost of War SE - Light Show by Mitzi
Images
File image preview
File Info
Author: Mitzi [Search Author]
Uploader: Mitzi [View Profile]
RFL Name: dmfrostofwarseb2.rfl
RFL Date: 12/25/2021
File Size: 41.1MB
File Type: zip
Added: 12/25/2021
Downloads: 100 (49 In-Game AutoDL)
Download File
File Ratings
Community Average Rating
👍 Recommended! 
(based on 6 user ratings)

Your Rating
Login or register to review and rate this file.
Description
UPDATED 2022 VERSION: https://www.factionfiles.com/ff.php?action=file&id=6310



Overview
The Frost of War SE is a modified version of The Frost of War. I added a music-synchronized light show, driven by the RF event system. This was done using some tools I am working on, originally mentioned in my RF version of Bad Apple!!.

Total construction time is about five days... the initial code and 30 seconds worth of lights were done in one day earlier this year, and everything else was done this week.

Use
Load the map in multiplayer and spam the USE key while grabbing the fusion. Remain spawned until the 10 second mark on the countdown, then it's OK to go into free spectate.

Technical details
As alluded to in the overview, the vast majority of events in this map (over 8000!!!) were not placed by hand in the editor, but injected into the complete RFL by a toolset I'm working on which allows scripted event system generation. My version of Bad Apple!! was also done using these tools, but only the raw injection of events was used there. In contrast, this map was actually scripted using a custom language I've implemented, which the tools then "compile" down to RF events.

The construction/compile process is as follows:
- The physical map, some visual effects, and the very basic control logic for the show are created by hand in RED. A particular Delay event is used to begin the show.
- The music is trimmed and processed in REAPER. Coarse timing of events (sections of the song) are denoted by placing timeline markers at the appropriate points. These markers are exported to a CSV file.
- A script converts the marker CSV file to a routine in my custom language which will branch off to other routines identified by the marker names. This will act as the entry point to the show.
- A script builds the countdown images and converts them to RF-compatible TGAs.
- A script injects some visual effects into the RFL which would be tedious to create by hand. This includes the bolt emitters for the trees (12 bolts * 4 colors * 2 trees = 96), crates (48 crates * 12 bolts * 4 colors = 2304) and most of the Vclips (1 vclip per meter * 31x21 area * 2 types = 1302). Also injected are relevant control events (Bolt_State, etc).
- A script generates some routines that would be annoying to write by hand. Scriptception >_>
- A script processes the custom language and compiles all routines to RF events. The Delay event noted in the first step is linked to everything required to start the show.
- A script packs all assets from the untouched map, the new RFL, and all new assets into a new VPP.

Having done some prior synchronization to music for audio-animatronics projects, it's always good to minimize the overhead of each iteration. You may make a change to only one second worth of content, but if your test process requires five minutes of screwing around, it's going to take forever to finish. For this reason, I tried to script as much as possible. From one command I was able to do all processing steps, including launching a dedicated server and the game. I also added the ability to optionally trim the first X seconds off of the music using ffmpeg, and this would also get passed along to the compile step to skip ahead the same amount of time. This meant that testing something two minutes into the song didn't require sitting through the whole preceding two minutes.

It would have been great to have the build script automatically join the launched game to the server but something is currently broken with Dash's join command.

Language
The language is not really like any other programming or scripting languages. It's kind of assembly-ish (I stole some mnemonics from 68K) but the way it functions is obviously very specific to how RF events work.
The following instructions exist:
uid <name> <uid> - define a name as an RF UID so there aren't random numbers all over the place
on <uid/name> - send an on signal to an RF event
off <uid/name> - send an off signal to an RF event
rel <seconds> - relative time value to subtract from all delays, used as a helper to be able to time things based on the timestamp in the REAPER project
dly <seconds> - simple delay
bra <routine> - branch to begin executing another routine. Note that this is async and does not block in any way.
dbra <seconds> <routine> - helper, branch with a built-in delay
pls <uid/name> <seconds> - pulse an event on, and then off after the specified time. non-blocking.
rem <text> - comment
var <name> <value> - define/set a variable, can be used like %name%. Note that these are "static" in the sense that they are only processed at compile time.
mul <variable> <factor> - multiply the value in a variable
mark - mark the start of a loop
loop <iterations> - simple loop

There are some obvious and non-obvious limitations to these. For example, there is no way to do recursion, there is no way that anything in the game can affect control flow in real-time, there is no stack, there are no parameters or return values on routines, loops cannot be nested, etc.

It probably shows that a lot of this was really hastily done. Variables and loops didn't even exist until the last few hours of production of this map and the code I've written shows this... lots of copypasta in things that were done early on. The routine bridge.txt is one that makes good use of language features.

Known issues
- If you are not spawned when the countdown reaches about 10~15 seconds remaining, the show will never start. This isn't really a bug, it's a method to force sync all the players.
- Going into the RF menu or using alt+tab after the show starts (actually, after 10 seconds remains on the countdown) will cause the music and lights to desync. This is an RF bug. I have a working fix for the music desync while in the menu, but an updated Dash Faction version hasn't come out yet. Sorry!
- The map has only been tested in a dedicated server. YMMV in a listen server or single player.
- The vast majority of injected events are at XYZ <0,0,0> and looking at the completed RFL in RED will be extremely slow.

Release?
I've included the source scripts for this map, the untouched level file, and some other goodies in a zip inside the vpp so go check that out if you're interested. Scripting tools (what compiles the scripts) will be released when they are ready. I operate strictly on Valve Time as I'm sure most people have figured out by now...

Stats
Some of the larger object counts pulled from the RED report on the completed RFL:
Delay.........................3164
Bolt Emitter..................2472
Play_Vclip....................1320
Target........................672
Invert........................320
Bolt_State....................314
Keyframe......................84


Credits, in no particular order
- Goober for The Frost of War as well as his contributions to this version.
- Brad Johnson for the base level.
- Trans-Siberian Orchestra for the music.
- nano for tolerating the song playing out of my speakers at least 430 times (seriously, my build scripts log it!) during development.
- nick for encouragement.
- Duane Jones for performance testing.
- rafalh for RFL format documentation.
All works inspired by His Imperial Majesty Emperor Haile Selassie I
Reviews
Avatar
Goober · Mon 12 Sep 2022, 1:48 ·
likes this
(Y)
User Rating: 👍 Recommended!  
This is an absolute work of art.
Avatar
MysticaL-AceR · Sun 26 Dec 2021, 11:22 ·
and like this
(Y)
User Rating: 👍 Recommended!  
First the Bad Apple show, and now this. I don't know what's your game-show next is, but i'm eager to see more of this in the future!

I loved the piano-metal song \m/ synced with the laser show as it made me dancing to the beat while admiring the laser effects going so vibrant and crazy! Even the fireworks on the sky (even tho they're explosions but i'd rather call them fireworks lol)

Thanks for the show Mitzi, now i know what i missed :2683: but better late than never.
Avatar
RoMeK · Sun 26 Dec 2021, 3:47 ·
and like this
(Y)
User Rating: 👍 Recommended!  
WWow! That was an incredible show! Love the usage of effects. Lots going on! It was fun flying through it while rocking out. B) Great work!! :!
Avatar
kerpal · Sun 26 Dec 2021, 1:42 ·
and like this
(Y)
User Rating: 👍 Recommended!  
The vibrant lasers and explosions synchronized with the music was absolutely remarkable. felt like a real light show with fireworks at the end. Nice work Mitzi!
Pages: [1]
Want to review this file? Login or register!

© 2009-2024 FactionFiles