Jump to content

jaMME 1.10 released


Recommended Posts




It took less than a year this time and again it was worth to wait the new jaMME release.




Windows version:


Android version:



- changed the order for autodownloading resources: client cvars have higher priority now

- [android] fixed never removing temporarily created demo file when destorying the application while the demo is getting played back

- [windows] added a possibility to open demo files from any place (registers dm_25 and dm_26 file extensions)

- fixed never playing demos back with the regular demo player after implementing command smoothing

- [android] fixed never saving favorite servers

- fixed missing timestamps on some lines in the console

- added seeking in the progress line by hitting it with the cursor

- removed annoying warning when server tries to set cvars, just ignore them silently

- [sdl] added game minimizing (credits: jk2mv)

- renamed avi size limit cvar (mme_aviLimit)

- added a possibility to take screenshots with DOF (screenshotDOF)

- fixed wrong indexing of position in sounds that have big sound data

- added drawing sound muted state

- added gamestate printing for debug purposes

- fixed not playing back .roq files that are not loaded from cgame

- fixed painting the whole console string if the previous string had \r with enabled timestamp

- added a possibility to use any colour in texts with format ^#0077FF

- [android] fixed possible going out of MAX_QPATH with demos that have too long names and opened externally

- [sdl] added an opportunity to use anti-aliasing (r_ext_multisample)

- allowed to open non-packed audio files when cgame is loaded

- fixed crash on check ghoul2 for null with advanced compilers that cut off those checks with enabled optimization

- [sdl] fixed endless video restarting when going into fullscreen mode

- fixed the crash with negative indexes on leaf brushes on x64 systems on map loading (credits: Xycaleth)

- [windows] added drag-and-drop support for demos

- [android] fixed losing connection when jaMME got minimized

- added an opportunity to disable players' heads turning toward other players (mov_headTurn)

- [android] mme renderer now works on Android

- improved input responsiveness by moving sampling to other side of framerate limiter (credits: Juraj "youurayy" Vitko)

- [android] rewritten jamme from Java to C# (Xamarin)

- added an opportunity to draw world areas behind doors etc (r_drawAllAreas)

- added cmake support for windows

- added missing command time based smoother resetting

- added an opportunity to stop avi capturing and save the video without quitting the demo (capture stop)

- fixed huge memory "leak" with allocating too much indexes for AVI

- added pipeline feature (credits: loda/videop) (capture pipe; mme_pipeCommand)

- added new demo tokens: server name, strftime date and strftime timestamps (credits: Alpha/Avygeil) (cl_autoDemoFormat)


New cvars:

- mme_pipeCommand

- mme_aviLimit

- r_drawAllAreas

- r_ext_multisample

- mov_headTurn


New commands:

- capture pipe

- screenshotDOF


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. Pipeline feature [All platforms]


I am sure many people want to capture videos in HQ but leave file sizes low. It's possible with modern codecs but adding those into jaMME is a pain in ass, so the max that jaMME could do is to capture into raw or compressed (with JPG) AVI. But we needed the golden mean.

So recently we (me and loda) added a feature called pipeline into jaMME that reads raw video and audio data from the game and writes it into the set pipe.


Currently the pipe we use is a very popular tool - FFmpeg.

That tool has so many options to adjust the video input and output to whatever everyone wants. But it's prolly scary for regular users. Don't worry - we made it simple to work with.


All you will need in new jaMME is to download ffmpeg.exe, put that into your GameData folder, start any demo, type /capture pipe [fps] [name] and voila you got your HQ video in MP4 (x264+ACC) that has nice quality and low size.

Ofc for those who want to adjust quality settings and other FFmpeg options we left that opportunity (mme_pipeCommand) as well and you will be able to do everything that you want.

The default value for mme_pipeCommand cvar is "ffmpeg -f avi -i - -threads 0 -preset ultrafast -y -pix_fmt yuv444p -crf 23 %o.mp4 2> ffmpeglog.txt".

Here we see that quality setting set to 23 (lower = better, bigger file size), encoding speed is ultrafast (slower = less file size), and the image quality has the full range with yuv 444 option and the output is an mp4 file with the name (%o) given in "capture pipe [fps] [name]". Adjusting those values affect speed, quality and file size. Try to play around with those values.

The only thing that you should not change in the new cvar is "-f avi -i -" which says we are reading raw video and raw audio from the game formatted as AVI.

Also although jaMME works much faster on one core and it forces to use one core, the pipeline works much better with the multithreaded way. So you better change com_affinity to 0 (requires restarting).

And also to capture raw audio data with pipeline be sure you have mme_saveWav set to 2.


Also the feature is designed to work with any pipeline-supported tools, so if there are some similar ones to FFmpeg then they also have to work.


Known bug: if you are capturing with FBO then pipeline works only if r_fboblur 1.


2. Opening demos with double-click and drag-and-drop [Windows]


Once you start new jaMME, dm_25/26 extensions get associated with jamme.exe and you will be able to open demos from any place. Drag-and-dropping demos into the game also works.


3. MME Renderer on Android


I moved the whole MME logic to jaMME for Android renderer, so it’s possible to capture from mobile devices. Pipeline also works but you will need to use special binaries for your certain CPU architecture (https://github.com/WritingMinds/ffmpeg-android/releases).

Also such features as motion blur and DOF work only on x86 and x86_64 CPUs.


4. Any text colour [All platforms]


Now all the text strings in the game can use any colour per character using ^#FF7700 scheme before every character. If I want my name purple with blue-green dot in the end I just do: /clientOverride player n ^#7F00FFent^#00ff7f.


5. DOF Screenshots [All platforms]


If you want to capture some static moment with cool DOF effect but don’t want to start it as a video capture then there is a new feature: DOF screenshot.

It is just a new command screenshotDOF [name] [focus] [radius] that can be bound to any key. Play around with the values.



Enjoy the new version.



Sentra and Smoo like this
Link to comment
  • 3 years later...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...