ent Posted June 13, 2022 Share Posted June 13, 2022 Yo. It's been a while since the last jaMME release. But the time has come. jaMME 1.11 is finally here. Windows: Android: Mac x86_64/arm64: Also thanks to tayst jaMME now has more frequent automatic builds (includes Ubuntu) that you can get jaMME binaries from without waiting for official releases: https://github.com/entdark/jaMME/releases/tag/latest Changelog: Spoiler fixed having a previous frame in the current DOF frame added a possibility to use a mask to make custom DOF "bokeh" (mme_dofMask) added a possibility to hide following message (mov_drawFollow) [sdl] added drag and drop support for demos added japro speedometer (cg_speedometer*, speedometer) added japro race timer (cg_raceTimer*) added japro movement keys (cg_movementkeys*) added japro strafe helper (cg_strafeHelper*, strafeHelper) Merge branch 'master' into strafe [linux] added a script to start jaMME with mme mod [mac] added arm64 (Apple M1) support [mac] fixed inability to use pipeline with relative paths: use absolute ones now (%a) increased the maximum for mme_workMegs to 2048 (2 GiB) [mac|linux|android] prevent shutting down the game with SIGPIPE fixed undefined behavior when stripping extensions by using the same src and dst [sdl] added display scaling (credits: jk2mv) [android] added automatic console scale for high DPI displays (con_scale) added demo bookmark (book) fixed incorrect time navigation in HUD on clicking progress when demo length is very long added demo script (script) [windows|android] added notifications system (mov_notify, cl_notify) added a possibility to open menu with Escape key when playing a demo instead of closing the demo (mme_demoEscapeQuit) increased the max trace distance for effects enhanced "find" command with attacker and target options fixed a rare crash when the demo tried to be played back before full cgame initialization [android] properly shut down the game [android] fixed in-game mouse cursor movement precision fixed a rare possible crash when writing audio to avi/pipe fixed a rare crash when a demo contains 2 or more gamestates and the first one (or any other) has less than 8 snapshots fixed detecting next demo number within one mme demo with internal errors added new base_enhanced team data with force points fixed colours in voting string holding mouse2 in chase view now lets roll the view added an option to rotate camera, chase or effect view in 6DoF instead of Euler angles (mov_view6DoFRotation) improved performance in camera angles smoothness on low camera rotation for non-linear camera interpolation method added camera position smoother on low camera movement for non-linear camera interpolation methods added a possibility to draw scoreboard for every POV added a possibility to always show scoreboard when hitting TAB (+scores) added a possibility to show player names above player models (credits: eternaljk) (cg_drawPlayerNames*) fixed never resetting underwater effect when going back to main menu [android] fixed white textures after resuming fixed animation precision in shaders added ratiofix for rectangle drawing fixed showing team overlay for non-predicted players if they are on different team added an ability to see non-predicted players' health and armor if they are on the same team as the predicted player added multispec feature (multispec) added support for new demo recording notification icon fixed never applying correct disruptor team colour for spiral rail (using saber blade colour now) fixed never applying new vibration effect to camera roll in regular game or regular demo playback added an opportunity to set relative sensitivity for mouse when zoomed (cg_relativeZoomSensitivity) added an opportunity to force ally models without changing player model (cg_forceModel 2) increased interpolation precision for entities with enabled command smooth fixed jittering movement for predicted player while playing with enabled command smooth increased position precision in drawing strings fixed ratio in drawing voting message + added shadow for better visibility fixed never disappearing shot marks on bodies after rewinding fixed wrong torso animation when firing with concussion fixed never using alternative master servers fixed never working new vibration fx with concussion alt fire fixed incorrect cutting of demo if it has animated timeline added unlagged support properly fixed disappearing line effects if effect starts behind camera fixed jumpy animation in ET_MOVER entities [android] added a support for the most keyboard keys [android] made the game execute properly while the app minimized added ratio fix to vehicle targets and other vehicle 2D items [android] load game modules with [abi]/lib[module][abi].so format instead of [arch]/lib[module]arm.so [windows] register demos extensions and ja protocol for the local user instead of global scope (does not requires extra permissions anymore) [windows] fixed opening demos from any place that put executable path to their directory instead of actual game directory added a possibility to use blurring on any architecture fixed incorrect altcharge and falling sounds interruption fixed shuttering sounds on low fps fixed sound delay demos now get loaded from all the given folders: <fs_game>, <fs_extraGames>, "base" it used to load from <fs_game> only change some cvars to new modern defaults: mme_saveWav 2, mme_jpegQuality 100, mme_cpuSSE2 1, com_affinity 0 [android] fixed huge memory allocation for sound and mme renderer fixed an issue where fs_extraGames was treated as fs_game if fs_game is empty added RPMod support: animations and text colours fixed wrong logic in importing wav to video where some conditions were always either false or true fixed rare crash where ghoul2 bone cache wasn't initialized fixed searching .mp3 extension string instead of character New cvars: - mov_smoothCamPos - mov_view6DoFRotation - mov_notify - mov_drawFollow - cg_relativeZoomSensitivity - cg_movementKeys* - cg_drawPlayerNames* - cg_crosshairColor - cg_strafeHelper* - cg_raceTimer* - cg_speedometer* - mme_demoEscapeQuit - cl_notify - con_scale - mme_saveCubemap - mme_combineStereoShots New commands: - find (subcommands) - multispec - script - book - speedometer - strafehelper As always the information about all cvars and commands can be found in cvars.txt and cmds.txt files that are placed in mme folder. Cvars: https://github.com/entdark/jaMME/blob/master/build/mme/cvars.txt Cmds: https://github.com/entdark/jaMME/blob/master/build/mme/cmds.txt 1. Virtual Reality (VR) capture To stay up to date with modern technologies I decided to implement a possibility to capture VR videos. Here are some examples (watch in your VR headset): Spoiler VR180 stereo 3D video: VR360 monoscopic video: VR360 monoscopic free camera video: VR180 stereo 3D screenshot: VR360 monoscopic screenshot: Long story short: this is achieved by capturing cubemaps in the game and then passing them to ffmpeg (pipe) with v360 filter. To capture a VR video yourself set mme_saveCubemap to 1 and mme_pipeCommand to auto. Long story long: Spoiler The idea: jaMME is a pretty complete tool and making new releases requires some big features. Also staying up to date to modern technologies is a good reason for a new release as well. The idea visited me a year ago when I got my VR set. So here we are: I decided to add the VR capture into jaMME. The solution: After googling a lot I found many solutions but all of them could not be simply applied to the game. Eventually I got the main idea: I need to capture the whole world around and the simplest way to do so it to capture cubemaps. And then I accidentally found out that ffmpeg can convert from and to any kind of spherical projection and that I could just use cubemaps. A year later all stars got aligned. VR video types: 1) 180 degrees stereoscopic 3D (VR180) 2) 360 degrees monoscopic (VR360) To capture for VR: 1) highly recommended but still optional: install ffmpeg and either put ffmpeg.exe next to jamme.exe or add it to %PATH% variable 2) set resolution to at least 720 pixels height (for example: set r_customwidth 1280; set r_customheight 720; r_mode -1) 3) set cg_draw2D 0; set con_notifytime -1; mme_saveCubemap 1 4) VR180: set r_stereoSeparation -0.5; set r_zproj 25 set mme_pipeCommand "ffmpeg -f avi -i - -threads 0 -vf v360=c1x6:he:in_forder=frblud:in_stereo=tb:out_stereo=sbs -c:a aac -c:v libx264 -preset ultrafast -pix_fmt yuv420p -crf 19 -y -metadata:s:v stereo_mode=left_right %o.mkv 2> ffmpeglog.txt" eyes are separated by 0.5 game units from the centre (-0.5 is the same, just for the left eye) and the focus point is 25 units forward, values can be changed using filter v360 we set input projection as cubemap 1x6 with faces order 'forward right back left up down', output projection as half equirectangular and input stereo top-down, output stereo side-by-side VR360: set r_stereoSeparation 0 set mme_pipeCommand "ffmpeg -f avi -i - -threads 0 -vf v360=c1x6:e:in_forder=frblud -c:a aac -c:v libx264 -preset ultrafast -pix_fmt yuv420p -crf 19 -y %o.mkv 2> ffmpeglog.txt" using filter v360 we set input projection as cubemap 1x6 with faces order 'forward right back left up down', output projection as equirectangular to capture for YouTube container should be mp4, in other case set it to mkv more info: https://ffmpeg.org/ffmpeg-filters.html#v360 5) capture pipe 60 name That's all, the video is captured. Editing: You can edit your VR video in Adobe Premiere Pro: https://helpx.adobe.com/premiere-pro/using/VRSupport.html And publish from there as well so the Publication block could be skipped. Publication: To make video players understand that the video is VR (uploading to YouTube requires that too) it has to have the corresponding metadata. Unfortunately by the date of 2021.11.24 ffmpeg cannot add such kind of metadata so you have to use other tools. You can inject additional metadata by using mkvmerge tool: VR180 for manual sharing and YouTube: mkvmerge --output out.mkv --projection-type 0:1 --projection-private 0:0x000000000x000000000x000000000x3fffffff0x3fffffff --stereo-mode 0:side_by_side_left_first in.mkv VR360 for manual sharing: mkvmerge --output out.mkv --projection-type 0:1 --projection-private 0:0x000000000x000000000x000000000x3fffffff0x3fffffff in.mkv Or you can use Header editor from MKVToolNix GUI to add projection type, projection type private data (or leave it untouched) and stereo mode in case of VR180. Setting stereo mode is not needed if it was set though ffmpeg. more info: https://mkvtoolnix.download/doc/mkvmerge.html https://github.com/google/spatial-media/blob/master/docs/spherical-video-v2-rfc.md#webm-matroska VR360 for YouTube: You can inject additional metadata by using Spatial Media Metadata Injector: 0) convert to mp4 if previously captured in mkv: ffmpeg -i in.mkv -c copy out.mp4 1) download: https://github.com/google/spatial-media/releases/tag/v2.1 2) run the tool and check "My video is spherical (360)" 3) click "Inject metadata" and wait a bit The video is ready for YouTube. Video resolution: The least recommended resolution of the game should be WIDTHx720, so it could capture cubemaps with 6 faces of 720x720 and final video resolution will be 2880x1440. 2880x1440 is one of the most popular resolution for many VR sets. Extra: Technically VR360 could be stereoscopic 3D but looking behind will swap eyes position so the depth will be ******ed up. Though you can look up and down by way higher angles. So VR180 could be monoscopic as well but it has no sense since VR360 monoscopic covers everything. You can capture for VR without pipe, just save cubemaps directly into screenshots or AVI. But then you will need to convert the cubemaps into any spherical projection anyways. Pipe is the default way now so better use it. YouTube compresses much so it's better to capture at high resolution like WIDTHx1080. 2. Multispec feature Multispec feature lets you see multiple POVs simultaneously. Spoiler Using the feature is pretty simple. Hit = (command: multispec add) to add a new multispec window. It will appear in the centre of the screen with a cursor that you can move and edit multispec windows. Put the cursor inside the window and click MOUSE1 or MOUSE2 to cycle through next or previous POV. Camera and Chase POVs are also options. Holding MOUSE1 and moving mouse will move the window. Scrolling mouse wheel will change window scale. Hitting DEL will delete the window. Hitting ESC or ENTER will finish editing. That's all, you got your multispec window. You can add as many windows as you want. More information and examples in the documentation. 3. Scripting console commands Script is a another keypoint-based mode that lets you execute console commands in certain moments in the demo. A few steps to use the feature: 1. Pause the demo. 2. Hit 5 to enter into script editing mode. 3. Hit V to add a keypoint. 4. Hit MOUSE3 to activate the editable demo HUD. 5. Select Run: and type some command, for example: "clientOverride player model reelo". 6. Move in time a bit. Repeat steps 2-4 but 4 with run: "clientOverride player model tusken". 7. Move back to the movement before the first keypoint. 8. Unpause the demo. 9. See how commands get executed in the exact moments they have been set to. Additionally you can edit Init: value in step 5. Init commands are guaranteed to be executed for all keypoints before current time when you rewind. Basically is used as a "reset" command. 4. Bookmarking demo time Sometimes you'd like to edit some moment in the demo but later since now you are editing another part so you can save that moment with bookmarks! Simple to use: hit 6 then hit V and it's added. Hit Q or E to jump between them. 5. Notifications You now get notified about demo event when your game is minimized/unfocused. Notifications could be textual, flashing and console. Basically they look like this: Spoiler You can be notified about capture start, capture end and find command results. 6. Custom "bokeh" in DOF (credits: Tom Arrow) Now you can set a DOF mask that can basically be treated as custom "camera lenses" that create custom blurring shapes in DOF. Just use any grayscale image with cvar mme_dofMask, for example: mme_dofMask gfx/2d/dlight to use dynamic light circle as a dof mask. Spoiler 7. Strafe helper Thanks to tayst jaMME got strafe jumping helper from jaPRO. Spoiler Just use strafeHelper command to see what you can set up. Now go make some new fancy movies! Smoo likes this Link to comment
Cor Posted July 13, 2022 Share Posted July 13, 2022 Woah, great features. This will improve or simplify things in the future. Especially like the bokeh and scripting. Thanks ent. Link to comment
afi Posted July 21, 2022 Share Posted July 21, 2022 That's great. Even without VR, being able to make 360° videos is really cool. Smoo likes this Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now