Jump to content


  • Posts

  • Joined

  • Last visited

Everything posted by eezstreet

  1. Background Originally, roq.exe was a tool developed by id software for the Quake 3 engine (now known as the id Tech 3 engine) to develop videos in their proprietary ROQ format. This format essentially links together a stream of TGA images and audio, which is loaded by the renderer. Raven Software developed a new form of roq.exe (roq2) which is a lot more advanced, and has some new features. It's also capable of outputting ROQs in specific dimensions, whereas the original roq.exe was constrained to a specific output dimension. In JKA and JK2, you can render movies and videos from IBI scripts or ingame using a videoMap shader keyword. This can be quite handy. Basic Usage roq.exe is essentially a command-line application that takes a parameter file. In the documentation, it seems to mention that .param is required, yet it appears to work just fine with any other file type. The parameter file lists all the files which are used for the frames, the audio, and some other miscellaneous stuff. How to make an ROQ The process is quite simple, as @@DT85 has outlined here. First, you'll need to put your frames somewhere where roq.exe can find them. Your path cannot contain spaces. I usually put mine in something like E:\video-editing. (Please see note at bottom for supported image formats) You'll need to create your .param file. I've detailed the .param file a bit further below. You'll now need to create a .bat which runs roq.exe. Something like this is appropriate: roq.exe Your_Param_Here.param pause The program will then build an ROQ based on the parameters in your .param file. This may take a while! The finished ROQ will show up in the same directory as roq.exe. If you want the program to not output as many lines, simply add a -q at the end. Or, you can output ROQ frames once the program has finished the file by doing -d <directory to store frames> Details on the .param file The basic syntax of the .param file follows: INPUT_DIR C:\Where_To_Find_The_Frames FILENAME _your_roq_here.roq SOUND _your_audio_here.wav INPUT*.tga [000-100] END_INPUT Some notes: INPUT_DIR cannot have any spaces, as I mentioned before. It tells the program where to find your frames. FILENAME is the output name of the file. SOUND is what audio file to use. It must be in the same directory as roq.exe! (alternatively, you could use an absolute path, I think, but again, no spaces) This field is entirely optional. See the notes below about audio format. INPUT/END_INPUT specifies how to process input. So for instance, I used "*.tga [000-100]". This specifies that the frames will be called 000.tga, 001.tga, etc all the way up to 100.tga. You could also do something like "screenshot*.jpg [000=100]" and it'll use screenshot000.jpg all the way up to screenshot100.jpg. Please see note at the bottom for supported image formats. Some extra fields that you could add to your param file: SCALE_DOWN - If this line is added to the file, the input will be scaled down. Usage: SCALE_DOWN FULLSEARCH - Use this for ROQs which will appear as a fullscreen video. It will scale up video without losing quality. I think this is spelled wrong. Usage: FULLSEARCH SCALEABLE - The ROQ will scale up to higher resolutions ingame by resampling the ROQ. Should probably be using this in tandem with FULLSEARCH Usage: SCALEABLE NO_ALPHA - If this line is added to the file, the alpha channel in the images will be ignored entirely. Usage: NO_ALPHA TIMECODE - Only use this line for certain MPEG files that aren't being displayed at the correct resolution. Usage: TIMECODE HAS_SOUND - Has no actual effect at all. START_PALETTE - Specifies the name of the palette file to use for start. (I'm not actually sure what these are used for.) The program will search for these in <your path>/LocalLibrary/vdxPalettes Usage: START_PALETTE <palette file name> END_PALETTE - Specifies the name of the palette file to use for end (see above notes on START_PALETTE) Usage: END_PALETTE <palette file name> FIXED_PALETTE - Uses this fixed palette for the whole video. (See above notes on START_PALETTE) Usage: FIXED_PALETTE <palette file name> SCREENSHOT - This line is a hint to the ROQ compiler that we're using screenshots instead of MPEG. Usage: SCREENSHOT KEY_COLOR - Specifies the key color of the video. Using this correctly can help prevent color artifacts in heavily compressed ROQs. Usage: KEY_COLOR <R> <G> <B> JUST_DELTA - Has no effect whatsoever. Usage: JUST_DELTA CODEBOOK - Makes codebook vector tables. Usage: CODEBOOK FIRSTFRAMESIZE - Sets the frame size of the first frame. Note that this is only one number, not two. Usage: FIRSTFRAMESIZE <size> NORMALFRAMESIZE - Sets the frame size that the ROQ is normally displayed at. Note that this is only one number, not two. Usage: NORMALFRAMESIZE <size> STILLFRAMEQUALITY - Has something to do with JPEG quality, I'm not certain on this yet. Usage: STILLFRAMEQUALITY <quality> FADEDOWNSTARTFRAME - Specifies the start frame to do a fade down effect. ROQ.exe will fade the video out, starting at this frame. Usage: FADEDOWNSTARTFRAME <framenum> FADEDOWNDURATION - Specifies how many frames it takes to do a fade down effect. Usage: FADEDOWNDURATION <frames> FADEUPSTARTFRAME - Similar to FADEDOWNSTARTFRAME, but has the opposite (a fade in effect). This specifies which frame to start this effect on. Usage: FADEUPSTARTFRAME <framenum> FADEUPDURATION - Specifies how many frames it takes to do a fade up effect. Usage: FADEUPDURATION <frames> MPEGCROPWIDTH - Crops the MPEG file (if used). Usage: MPEGCROPWIDTH <width> MPEGCROPHEIGHT - Crops the MPEG file (if used). Usage: MPEGCROPHEIGHT <height> MPEGCROPXORIGIN - Crops the MPEG file (if used). Usage: MPEGCROPXORIGIN <x origin> MPEGCROPYORIGIN - Crops the MPEG file (if used). Usage: MPEGCROPYORIGIN <y origin> FPS - Frames per second. (CAUTION: I'm currently not sure if this means that it simply duplicates/drops frames in order to maintain FPS, or if it actually changes the rendering FPS ingame for the ROQ...proceed with caution) Usage: FPS <fps> Supported Image Formats roq.exe uses an image library designed for supercomputers with a huge selection of supported formats. As far as I can tell, the following formats are probably supported: .jpg, .bmp, .tiff, .tga, .gif, .pcx, .ico, .pic, .pict, .hdf, .pix, .cur, .eps, .epi, .epsi, .epsf, .icon, .cursor, .pr, .iff, .vff, .suniff, .tanc, .miff, .x (NOT directx), .avs, ... (tons of other obscure formats) I haven't tested all of these. .png is NOT supported however Supported Audio Formats Credits DT85 for help with ROQ stuff jedis for putting code up on Github for roq2, this was a big help MaceCrusherMadunusus for the note on audio San Diego Supercomputer Center, their docs helped me figure out which image formats were supported
  2. At some point in development of JA, there was to be an NPC known as the Cultist Destroyer. It would instantly go into a rage mode and try to suicide bomb next to the player. While I haven't talked to Raven about why this NPC was removed, I can only speculate that it had something to do with cultural reasons (suicide bombing was oft-reported in the news during 2003's Iraq War) However, the .npc file and code is still intact, meaning this NPC was cut very late into development. There is also a cultist_commando npc which never appeared, and fully works (it has dual wielding blasters! awesome!) Anyway, enough talk. You can spawn this NPC using an npc_spawner entity with npc_type "cultist_destroyer". The NPC will go into a rage, disappear and you will die instantaneously. But there's no effect? Easy fix. The effects for the NPC didn't ship with the game but we can add them back in. For this you'll want to create a new PK3. In this, add an effects folder. Inside of that, a folder called force. Inside of this folder you will need an EFX named destruction_exp.efx. If you have no experience in creating an EFX file, that's okay, you can reuse an existing EFX like the rocket launcher explosion effect or one of the env/explosion ones. I don't know the splash radius on their explosion as it isn't explicitly stated in the code. Your mileage may vary.
  3. Fixed the screenshots being broken links, and replaced them with ones that conceal some of my personal info and point out the information better. I've also updated the "Most Common Errors" section as it wasn't up to my standards.
  4. 121 downloads

    With the Steam Integration Tools, you can either: Enable enhanced Steam functionality for mods which allow it, or: Get information about enabling enhanced Steam functionality in your own mods. For instance, you can enable the Steam overlay in your custom mod, or enable Steam's Rich Presence, or perhaps provide support for Steam controllers! Note that this is unsupported by Valve, Activision and Raven Software and done entirely at your own risk.
  5. Updated the changelog with more information.
  6. This is a very heavily WIP list of what is going to be changed in this version. Some of it is still being designed as we speak. Anything in RED is not complete. Engine Overhaul Added rd-rend2 as an option. Redid the entire memory allocation system. It is much more centralized and can better track how the game is using memory. Added perf_zone to monitor memory usage Added perf_net to monitor network traffic Improved the perf cvar to have more performance tracking options Added dimensions/player isolation. Servers can now have multiple maps loaded at once on different "dimensions" that clients can switch between. This allows for instances to occur. Removed ICARUS scripting engine, replaced functionality with Lua. HUD code migrated to Lua. Added save system. For now players switch between different profiles (full login authentication service coming in Phase 4) Much vestigial code removed (Old JKA NPC code = gone, vehicles = gone, ...) Completely redid the AI systems. New NPCs will have a variety of new behaviors and features to offer challenging PVE combat. Chat and text overhaul for fonts, etc. New Features Primary Feature: Players can embark on quests together in a hub world by joining a party and then migrate out to dungeons/instances to complete quests. Mos Eisley Hub Map. This includes various different NPC located throughout the city that offer various types of services, quests, shops, etc. 3 fully fleshed out story quests and 2 shorter quests. More will be added later on (likely in Phase 3), but these will serve to demonstrate what quests can do, how they'll work, and will be designed to be repeatable and can be done as a coop group or as an individual. Most of these will have new maps used for their instances. Quest system. Keeps track of what quests the player has started, and what the current stage or settings are for it. This includes UI for managing quests/journal etc. Party System. A player can invite up to 4 others to join them for Coop quests or to coordinate as a PVP party. Management of the party can be handed off to a new member or disbanded. Rudimentary Level System. While skills were introduced in v1.5 and v1.6 of Phase I, this system manages XP and distributes skill points to spend based on level. XP can be gained by killing NPCs, players, or by completing quests. This data is not persistent (yet) and only lasts for the session.
  7. Updated this thread, since it had ancient information in it.
  8. It will not work. CoD uses a modified format with custom lumps. What MIGHT work is if you save the .map file in CoDRadiant and compile in GTKRadiant using q3map2. Or somehow configure CoDRadiant to use q3map2.
  9. I had a very curious person send me an email asking how to increase the NPC limits in SP, so I went a bit ham and wrote a full guide. This gets asked a lot, so I figured I'd pitch it here. If staff would like (@@Caelum / @@Circa ?) I can post it in the tutorials section if it isn't already there. --- Hi, For starters, you will probably want to use the Visual Studio C++ compiler, not Visual Basic as that's a different language altogether. After you've got that fixed, you'll want to consult this guide for getting the thing compiled: https://github.com/JACoders/OpenJK/wiki/Compilation-guide Once you get it compiled, you'll note that it builds a "jagamex86.dll", an "Openjk.x86.exe" and a "rdsp-vanilla.x86.dll" (or something along those lines, I don't remember the exact names). You'll want to place the jagamex86.dll in a mod folder (you can create a mod folder in Gamedata), and the other files in your Gamedata folder. Then to launch your mod, you'll want to create a .bat script file (it's very easy, all you need to do is open up Notepad, and save a file as .bat), with the following contents: `openjk.x86.exe +set fs_game "MyMod"` Where MyMod is the name of your mod folder. But don't include the `s! If you got that all working, you can start making your edits now. There are a few specific things regarding limits. First of all, the list of NPC files is limited to 2048 characters. Look at this file, at this line I've highlighted, and change the number from 2048 to something higher: https://github.com/JACoders/OpenJK/blob/712627afab20aaa772d062a8fc8aeb5d3efa6152/code/game/NPC_stats.cpp#L4084 Second...the .npc files are all dumped into a giant buffer and read from this buffer. This is limited, and if you go over it, you'll likely run into a "NPC_LoadParms: ran out of space before reading ..." error. This limit is handled here: https://github.com/JACoders/OpenJK/blob/712627afab20aaa772d062a8fc8aeb5d3efa6152/code/game/NPC_stats.cpp#L217 Just note that this is a hexadecimal number. If you fire up good ol' Windows calculator in Programmer mode, you can see that 0x80000 is the same as 524,288 - so the maximum size of all NPC files combined is 524,288 bytes, or 512 kilobytes. To up this limit, you can just add a couple of zeroes to this (so make it 0x8000000 or something), or use a number larger than 524288. Beware though, the highest you can go is about 2000000000 (2 billion) before you will run into issues (and you don't really want to do this anyway - you'll make the game chew up 1gb in RAM !!) If you have any questions or concerns, feel free to send me a response. ---
  10. Both of those are optional things that can be tweaked via cvars.
  11. They're popular because every device can support them. Before the Unicode Consortium decided on having emojis, forums were kind of left to having a hodgepodge of different smilies that weren't guaranteed to all look the same on a system. Now you can, as long as the device you're using supports it.
  12. Dang this looks nice. Can't wait to see it in PBR!
  13. A couple things: - I'm not attacking Tompa9 specifically here. I'm asking a question on a more deep philosophical level: How can it be OK to license something with a restrictive license when your work largely relies on other people's work? The people in that thread in question were calling that person a piece of shit, and there were back and forth exchanges of insults etc, which I don't think is right at all. I understand where Tompa9 is coming from, but I disagree with it. That's it. - As I was staff then, and I am not staff now, as I mentioned before, I'm less inclined to take a neutral approach when it comes to specific touchy subjects. When you're the #2 guy on the site, generally you don't want to make people upset. Nowadays I just don't care as much, honestly. - I still think he has the right to license his work however he wants, I just disagree with his choice of license. So I'm not exactly contradicting myself here.
  • Create New...