Urban Terror Forums: Optimized .exe; builds of ioq3 engine - Urban Terror Forums

Jump to content

 Login | Register 
Advertisement
  • (142 Pages)
  • +
  • 1
  • 2
  • 3
  • Last »
  • You cannot start a new topic
  • This topic is locked

Optimized .exe; builds of ioq3 engine Rate Topic: ***** 17 Votes

With GoogleTranslate, Bumpy, dmaHD, iKALiZER, Raw Mouse, Bug Fixes, ..

#1 User is offline   mitsubishi Icon

  • Account: mitsubishi
  • Country:
  • Joined: 28-February 10
  • Posts: 13,481

Posted 04 November 2009 - 04:42 PM


[project page] (site is down)
[Download from Urban-Zone.org]

This project replaces only the .exe of urban terror with a latest version of ioq3 engine, optimized and enriched with several new features and fixes. It does not require q3 and is compatible for online play.

Notable features:
  • Raw Mouse Motion (High-Definition) and Raw Mouse Keys support: in_rawmouse 1; it also eliminates cases of negative acceleration.
  • "bumpy" renderer with use of VBOs and GLSL, Bump mapping, Bloom, Depth of Field Blur, Fog, Fancy Water, Improved Decal Code, and more. Faster than vanilla q3 renderer on r_simpleshaders 1 (set by default for performance; 0 to get its effects).
  • Several Surround even on Stereo Headphones Systems (Hear audio coming from the back differently):
    • dmaHD with 3D H-HRTF audio, Speed-of-sound mapping according to medium: Air or Water, Natural Doppler effects, automatic memory management, 2 alternative mixers, optimized for headphones and available to all OSes (the default; s_useopenal 0, s_useikalizer 0)
    • OpenAL with OpenAL-Soft library or a hardware implementation (s_useopenal 1 and appropriate library). It is also required by VoIP.
    • iKALiZER: win32 only (s_useikalizer 1, s_useopenal 0)
  • Google Translation in chat with /translateAuto 1 or with /translate <text>
  • Unicode fonts Rendering, mainly for Google Translation output.
  • Win64 binary support first developed for this project [with actual qvm compilation]
  • Funstuff, Radio Audio and part of other audio are pre-Loaded to avoid potential freezes of FPS (blocks of rendering, shown with blank gaps on lag meter). This was a q3-wide UrT issue that applied when someone else joins the game or funstuff is set on the fly, or when some audio files are heard for the 1st time. [Bug reports: 1, 2]
  • Mumble Positional Audio (hear others in '3D') - 'to use it, start Mumble before you start ioq3, and run the game with +set cl_useMumble 1' [more info at mumble]
  • Microsecond Definition support; it potentially increases efficiency of the engine and makes it possible to use any integer on com_maxfps; /sysMicroGranularity
  • An important issue of dropping audio on auto firing is fixed (it was giving the illusion of lower firing rate); it affected Base and dmaHD audio and it can be tuned with /s_smpRepeat.
  • Reduce CPU usage explicitly with com_Sleep or automatically with com_SleepWhenMinimized/Unfocused (this will often reduce FPS, mainly useful for saving CPU time; settings in milliseconds; sane values 0-40).
  • Voice (VoIP) for servers that support it (/cl_voip 1; ioq3 server: /sv_voip 1). Full instructions are here. Bind a key to +voiprecord to talk, '/voip muteall' to mute all. It requires OpenAL and a high /rate.
  • Meters with stats for Ping, FPS, Snaps and Packets
  • Quiet console; avoid seeing the same technical messages over and over when map changes.
  • /zoomsensitivity; avoid scripts by using a direct multiplier on your normal sensitivity only when zoomed. e.g. /zoomsensitivity 1.5 means sensitivity x 1.5
  • Teleportation: bind a key with /bindteleport <key> and transfer back there when key is hit (locally or with rcon; server cmd: /teleport <cl num> x y z).
  • Motion Blur (at least on NVIDIA); /r_motionBlur 1, r_motionBlurStrength to tune the strength of the effect
  • autotimenudge: set timenudge automatically - experimental feature - do not use when spectacting or right after round change - see notes below
  • Anaglyph rendering with 3D glasses
  • /sysexec, execute an external program (in the path or using full path). This can be used to control external applications via controller utilities.
  • /totaltimerun - report the total time the client has run since its internal var was first saved plus the time run for current session.
  • Stopwatch of millisecond accuracy
  • 'server is full and server is for low pings /reconnect' workaround; plus no need to wait to hit /reconnect on a 'server is full' that may erroneously report 'for low pings'. [Bug report: 1]
  • SDL system for accessing input, graphics and audio hardware; this may improve access to input, audio and video hardware.
  • Alarm mechanism on clock
  • Built on recent compilers
  • Blank the screen temporarily with +blank (/bind x +blank)
  • /rebind: bind a key to a cvar and its current value. Useful for making gear-sets binds on the fly during gaming.
  • Windows clients can hold more than 512 .pk3s.

Downloads:

Instructions:
  • Unzip files into urt's .exe folder
  • Run ioq3-urt.exe
    (one can rename it to ioUrbanTerror.exe for convenience with other programs, though this is not a version of iourt, it only acts like it partly)

Notable features in detail:
  • ConsoleVars added: (click 'Show' to view; dmaHD, iKALiZER, Bumpy and new ioquake3's vars are not listed; they are included in their respective URLs.):
    Spoiler

  • Raw Mouse Motion (High-Definition) and Raw Mouse Keys: in_rawmouse 1: It utilizes raw input in accordance with a Microsoft advisory. The main advantages are higher resolution support and the elimination of cases of negative acceleration. With in_mouse -1/in_rawmouse 0, negative acceleration can occur since an internal desktop cursor is utilized which may produce the quirk if it hits the edge of the window before it recenters. Also, since the virtual cursor only sends signals when it moves, it is lower resolution/higher latency in certain cases. On in_mouse 1/in_rawmouse 0 (DirectInput) there's no negative acceleration attributed to software or lower resolution but there are higher latencies involved (also according to microsoft). The functionality is live, meaning in_rawmouse's value takes effect immediately in game. Since it accesses the raw device it might ignore high-level windows settings such as left-handed switches. The API is not always stable, so in certain systems it might be better to revert to the old way.

  • Full info on the "bumpy" Renderer by Peter "TwentySeven" McNeill is in its thread. Porting was greatly helped by QA member undead. r_simpleshaders is 1 by default for performance, set it to 0 for its effects. Features such as fancy water or full bump mapping have to be supported by the map or override a map's shaders. e.g. try ut4_moonbase for fancy water examples. It may require newer GPU hardware or more RAM than before. It is still relatively unstable, especially on older or simpler video cards; in that case vanilla builds are available. BSP processing duration is expected to be increased.

  • Surround even on Stereo Headphones Systems (Hear audio coming from the back differently):
    • dmaHD audio is developed by p5yc0runn3r and offers real 3 dimensional H-HRTF audio with Bauer Delay and Spatialization on low CPU usage. It is optimized for 2 channel headphone listening, it offers Natural Doppler effects, Different mediums: air and water, Speed-of-sound mapping in different mediums, Logarithmic attenuation of distant sounds, Fast integer computation, automatic memory management. s_useopenal and s_useikalizer should be set to 0 to use it. More information and full var listing is in its thread. It is on by default. To revert it to base system set dmaHD_enable to 0 and restart game. Other ioq3 defaults are s_mixahead 0.2 and s_sdlSpeed 22050.
    • OpenAL is an API with several software and hardware outcomes and is also required by in-game VoIP support. OpenAL-Soft is a software implementation which offers basic Binaural experience. The API also provides a framework for card manufacturers to support their audio features on hardware. Audio cards that have OpenAL support on their drivers (such as Creative, Nvidia, and Realtek's) can provide forms of "Surround Headphone sound" or Surround Speakers setups (via methods such as HRTFs, Dolby 5.1 Simulation, CMSS-3D, 5.1/7.1 Speakers etc.). The system needs an appropriate library (e.g. an OpenAL32.dll) available such as OpenAL-Soft for basic software binaural audio, Creative's basic OpenAL libraries, or a manufacturer's hardware supporting libraries.
    • iKALiZER is the most fully featured but it can have the most CPU impact - though mainly on old systems and single core CPUs - hence it has to be enabled manually with s_useikalizer 1. It is developed by Christophe Gossa and more information is in its thread. Headphone HRTF mode is enabled by default (other modes are available (such as 5.1 or holographic headphones, see /ikalizer_channelmode) but this should be the main needed by most gamers). If you need its replacement sounds (nades sound great), download the 20MB file (from its thread) and place only q3ut4\iqs dir in %appdata%\Quake3\q3ut4 (not in .exe dir\q3ut4). If OpenAL was enabled, it has to be disabled with s_useopenal 0 before using this; /s_info should report which sound system is in use.

  • Google Translation; /translateAuto 1 will attempt to automatically translate chat messages, translateIN can give the input language - automatic detection by default, translateOut the output (mainly for "en" currently due to ASCII console limitations). /translate <text> can explicitly translate a sentence and cl_translation enables the overall translation support (it involves initializing cURL). Other related vars are in the var list above. It is both multithreaded and able to re-use already open connections to Google hence its resources and networking impact is minimized.

  • Unicode rendering of fonts is mainly useful for output from Google Translation. Several vars can configure it starting with /Unicode_. They are listed in detail in the var list above.
    Posted Image
    Posted Image

  • A base audio (and by inheritance dmaHD) issue involving dropped sounds when attempting to play them simultaneously is tackled with the /s_smpRepeat var. It effectively allows a higher limit for simultaneous playback of the same sample. This solves the issue of having dropped sounds e.g. when auto firing a G36 or M4 which was giving the illusion that rate of fire was lowered (while only the audio that was heard was erratic). The issue was apparent on all clients and systems though it is less pronounced on older versions of ioquake3 (such as the one on iourt). The new var's default limit of 16 is 4 times higher than the hardcoded vanilla one. There is a minimum limit of 8 since the previous one (4) was effectively buggy. Examples: in a quiet environment, auto firing a LR300 now can lose sounds only on timescale 3 or 4 when using the minimum allowable of 8. On the default of 16 or higher it's virtually impossible. Notice the limit is internally doubled for sounds originating from the Listener (like the aforementioned firing examples). It doesn't affect CPU load; such a process existed to begin with possibly for avoiding spamming of sounds that fill up all channels due to map or gameplay quirks.

  • Concerning VoIP, notice that cl_voip is 0 by default and if it's enabled the console will be slightly spammy about its requirements, i.e. "I need OpenAL" and "I need high /rate" (in bright yellow) if they're not available. If it's initialized reasonably, i.e. it got a recording device on OpenAL, it will print '* VoIP is initialized'.

  • Microsecond Definition is an experimental feature that might do little to be noticeable. The theory is that better granularity of timing, microseconds instead of milliseconds, will increase efficiency of the engine. An interesting outcome is that currently it's used to throttle FPS with com_maxfps in finer granularity, and as a byproduct, that makes it able to throttle at any number since it's not restricted by 1000/integer anymore. It's also used scaled on milliseconds calculations (that was already the case for UNIX). Its governing var - /sysMicroGranularity - can be changed on the go. Cl_drawFPS utilizes it for finer output in a floating form. It can be expanded to other areas of the engine/client. It is susceptible to hardware bugs or bugs on the windows API that make frequency of the timer reported incorrectly (disabling certain power options may remedy it); disable if necessary.

  • /totaltimerun - report the total time the client has run since its internal var was first saved (cl_totaltimerunsave), plus the time run for current session. (up to 136.2 years).
    Posted Image

  • Anaglyph rendering (with 3D glasses)
    Posted Image
    It is available in the latest ioq3 versions; detailed information on its use is here (lengthy details on its operation and vars here). Notice that it may need /r_anaglyphMode (e.g. 1) and not r_stereoEnabled which may require special hardware or not be functional yet. I tested it on a common pair of red/cyan glasses but that may not be an ideal mode.

  • Stopwatch (millisecond accuracy)
    Posted Image
    use /cl_stopwatch 1 to show it; bind a key to cl_stopwatchstartpause to start/pause it; cl_stopwatchreset to zero it. Similarly with the meters described below, its position can change with cl_stopwatchposx/y and its size with cl_stopwatchsize. It supports /timescale.

  • Auto-timenudge is an experimental feature (do not use when spectacting or right after round change):
    Posted Image
    It attempts to set timenudge based on the standard deviation of ping. /autotimenudge attempts to set it on-demand according to the collected data. A very experimental feature is cl_autotimenudgelive which attempts to do it periodically automatically; it is very quirky since hell may commence after round-change or when spectating since at that time ping data is unreliable or nonsensical (however, it may be bearable on non-round-based gametypes). Another undesireable behavior is that config is updated each time though on the on-demand version this can be considered normal. Other cvars incluce cl_autotimenudgecommand for setting the timenudge command of the game (ut_timenudge on urt), cl_autotimenudgeinterval for the interval it collects data to calculate standard deviation and cl_autotimenudgefloodprotsec for setting flood protection delay in the case of live. cl_drawping described below can be used to observe standard deviation directly according to certain intervals (data are not connected between them).

  • Detailed Meters: cl_drawPing, cl_drawPackets and cl_drawSnaps:
    Posted Image Posted Image Posted Image
    They show base value of Ping, Snapshots per second (from server to gamer) or Packets per second (from gamer to server); there is also mean value for two intervals (in seconds) set by the user via vars. There is max spike or drop of those values in the intervals set as well as mean spike or drop and most importantly, standard deviation. Standard deviation shows in general 'the common difference of most values from the mean'. This means it's a very good approximation of stability in a single number. A (direct) use of it might be to set ut_timenudge according to the standard deviation of ping but that may be debatable. Their size can change, their position can change too according to vars you can easily find out by typing the vars and hitting tab (to not flood this page unnecessarily). In the case of snaps/sec delayed packets are also shown, referring to those throttled by rate/sv_maxrate and extrapolated ones (which may have a different meaning from extrapolation shown on net meter); the packets/per second meter (client->server) demonstrates how depended is cl_maxpackets on FPS.
    • The /cl_drawFPS variant draws values in a floating form and utilizes microGranularity for high precision:
      Posted Image
    • /cl_drawMouse (updates/sec, dots/sec, total dots for an interval and max dots)
      Posted Image

  • cl_drawclock has an alarm mechanism, it can be a 12h clock on choice and it can be set whether to show seconds.
    Posted Image
    cl_drawclockshowseconds shows seconds (off by default); cl_drawclock12 makes it become a 12h clock and cl_drawclockalarm24 can set its alarm time in the form of HH:MM (in 24h format). It alarms (by default) by playing the main urt audio theme. The alarm command (what happens when alarm time comes) can change with cl_drawclockalarmcmd (e.g. it can quit the client on alarm if set to 'quit'). It is not in operation when clock isn't shown to save cpu cycles (granted, it has minuscule importance but the principle of optimization stands) and it's not in operation when not in a map. Positional vars are similar to meters'; cl_drawclockcolor alters the main clock's color.

  • Recording notification has been modified to only show the first 10 characters of the filename to not flood the screen (similarly to iourt); cl_recordfontsize will change its font size; 0 will disable the notification so be careful. Posted Image

  • Concerning teleportation, /bindteleport is a bit gimmicky, mainly for /map and /devmap since it doesn't add 'rcon' in front. If someone was running a server with it I guess they could add manually clients to binds with /rcon teleport <client number> <x> <y> <z>.

  • config files, demos, screenshots, and videos. are auto-saved in %appdata%\Quake3\q3ut4 to allow for multiple users and to avoid security system issues on Vista/7 (%appdata% is a shortcut to <drive>\Users\<Username>\AppData\Roaming in Vista/7 or <drive>\Documents and Settings\<user name>\Application Data in XP). An autoexec or a demo already in the old location still works fine. The priority is "read %appdata% first, app dir second; if a cfg appears in both, only read the one in %appdata%". The autogenerated q3config is being saved in %appdata%. "You can revert to the old single-user behaviour by setting the fs_homepath cvar to the directory where the game executable is located. For example: ioq3-urt.exe +set fs_homepath "c:\UrT" Note that this cvar MUST be set as a command line parameter [e.g. in the shortcut or qtracker parameters]."
  • Mouse keys for Logitech and potentially other mice can be differently mapped here - even on the same filename - because ioq3 uses the SDL library to access input. The good news is that previously disabled keys may now work.
  • The mess of technical messages each time a map changes is removed with cl_quiet; On by default. Some messages that are controlled by the game code (and not engine code fully accessed by this) are removed with an ugly hack via ..cl_quietuglyhack.
  • /minimize (also on a bind) explicitly minimizes the client, plus alt+tab explicitly directs SDL to minimize it (rather than relying on the windows manager). Use of /minimize can fix a gamma bug that may appear on windows if one minimizes it with alt+tab (since alt+tab's real job is to bring up a list, not to minimize).
  • cmd buffer has been increased to support larger config files (of 128KB)
  • an interesting support feature from ioq3 is that in case of crash, the game presents the user with a choice to start with safe settings (e.g. video resolution).
  • a +vstr bug (involving locking of key-down event in the case of using a second +vstr bind) has been workarounded. [Bug report: 1]
  • /rebind can work as follows: If F5 is bound to "rebind F9 gear" then hitting F5 during gaming will set F9 to "gear XXXXX". Useful for setting gear-sets binds on the fly during gaming (when not knowing what sets will be used when making scripts).
  • cl_aviMotionJpegQuality can adjust the quality of JPEG when cl_aviMotionJpeg is on. Similarly, r_screenshotJPEGQuality can do the same for /screenshotJPEG.

Additional Features and Information at its project page

Initial replies below are outdated.

This post has been edited by Nexu: 02 February 2012 - 01:18 PM
Reason for edit: Project Page is down


#2 User is offline   fateful Icon

  • Account: fateful
  • Joined: 26-May 10
  • Posts: 96

Posted 04 November 2009 - 05:19 PM

couldn't run this .exe on Windows 7 x64, neither on ioUrban Terror dir, nor Quake3-UrbanTerrorMOD dir..

"Program can't start becouse MSVCR100.dll is missing from your computer."

#3 User is offline   ObScUrE Icon

  •   head moderator   
    Co-Chief Community Moderator
  • Account: obscure
  • Country:
  • Joined: 28-February 10
  • Posts: 2,192

Posted 04 November 2009 - 05:39 PM

That build works really good for me but without vstr support it's useless for most players can you add this to your build?

most lag in figthing situations on my system:

1. iKALiZER
2. Original UrT
3. your build

so it works :)

iKALiZER is better for positional hearing but needs more hardware resources so this is actually a nice and meaningful build.
I suggest that the dev-team should use this for the default 4.1 download.

*Thumbs Up*

EDIT1:
@fateful yes you have to download the dll file and place it in your UrT.exe folder or system32 folder. ;)

EDIT2:
when I connect to a server with the ingame browser the main menu music and the game stands still for some seconds (same problem on the ioQuake3-iKALiZER build).

EDIT3:
it creates a new directory tree
C:\Dokumente und Einstellungen\ObScUrE\Anwendungsdaten\Quake3\q3ut4
for q3config.cfg and q3history

This post has been edited by ObScUrE: 05 November 2009 - 12:32 AM

Quote

BenQ-XL2420T|Filco-Ninja-TKL-MXRed|Logitech-G403|AKG-K70201000010 01101100 01110101 01110100 01010010 01100001 01110101 00100100 01100011 01101000~The quieter you become, the more you are able to hear.~

#4 User is offline   mitsubishi Icon

  • Account: mitsubishi
  • Country:
  • Joined: 28-February 10
  • Posts: 13,481

Posted 05 November 2009 - 01:21 PM

What is vstr? do you mean the scripting command? it is in.

BTW, this is not an official version that's supposed to be stable so yes, it retains ioquake3's new way of doing things, such as using those new configuration locations.

Also it shouldn't be used - and it most certainly won't anyway - by the official team since they are working on their own specialized builds as far as I know which should be better than this one.

The dll requirement concerns me, it probably comes from the new Visual Studio used, it's probably a requirement for a .net framework update, perhaps 4.0. Well, it can supposed to be 'ok' since I'm trying to use latest tools available.

This post has been edited by mitsubishi: 05 November 2009 - 01:29 PM


#5 User is offline   ObScUrE Icon

  •   head moderator   
    Co-Chief Community Moderator
  • Account: obscure
  • Country:
  • Joined: 28-February 10
  • Posts: 2,192

Posted 05 November 2009 - 01:42 PM

that is the patch for vstr (scripting)
I get everytime Cbuf_InsertText overflowed when I want load my config.
but I have that problem on all new ioquake3 builds.

Quote

BenQ-XL2420T|Filco-Ninja-TKL-MXRed|Logitech-G403|AKG-K70201000010 01101100 01110101 01110100 01010010 01100001 01110101 00100100 01100011 01101000~The quieter you become, the more you are able to hear.~

bullet_loaderAdvertisement

#6 User is offline   mitsubishi Icon

  • Account: mitsubishi
  • Country:
  • Joined: 28-February 10
  • Posts: 13,481

Posted 05 November 2009 - 01:46 PM

Apparently the DLL is redistributable so I just included it in a new zip included in the original post.

PS. It is part of Visual Studio 2010.

much later edit: that's actually the c runtime library for windows; apparently vc++ is setup to not be requiring this dll but it does anyway; it may be a bug (in a beta of vc++) or it may be something i miss.

very later edit: this is no longer required by using a different c lib.


^ I will include that patch in a new build (later though since I install a new version of the tools). Is it absolutely needed? I find it hard to believe ioq3 have such a serious mistake. UrT bug perhaps?


I should probably include openal by default in settings since it's in anyway.

I should also probably edit the original post to be more descriptive, like the "technical support" build.

This post has been edited by mitsubishi: 14 December 2009 - 05:08 PM


#7 User is offline   ObScUrE Icon

  •   head moderator   
    Co-Chief Community Moderator
  • Account: obscure
  • Country:
  • Joined: 28-February 10
  • Posts: 2,192

Posted 05 November 2009 - 02:20 PM

the vstr support works but I think my config is to big there must be a size limitation that's the reason I get the Cbuf_InsertText overflowed message.

Quote

BenQ-XL2420T|Filco-Ninja-TKL-MXRed|Logitech-G403|AKG-K70201000010 01101100 01110101 01110100 01010010 01100001 01110101 00100100 01100011 01101000~The quieter you become, the more you are able to hear.~

#8 User is offline   mitsubishi Icon

  • Account: mitsubishi
  • Country:
  • Joined: 28-February 10
  • Posts: 13,481

Posted 05 November 2009 - 03:36 PM

ok patch is included, engine is rebuilt, original post is edited (to mainly be more user friendly).

source is included (in a different 7z archive though I suppose it shouldn't be that needed by most).

voip is removed, autodownloading is attempted to be on by default (per an issue in an older build).

This post has been edited by mitsubishi: 05 November 2009 - 04:21 PM


#9 User is offline   mitsubishi Icon

  • Account: mitsubishi
  • Country:
  • Joined: 28-February 10
  • Posts: 13,481

Posted 05 November 2009 - 04:21 PM

oops, an initial update had SDL's DLL removed, fixed.

#10 User is offline   conker (old) Icon

  • Joined: 30-June 09
  • Posts: 17

Posted 05 November 2009 - 04:54 PM

can you compile one version optimized for amd processors?

  • (142 Pages)
  • +
  • 1
  • 2
  • 3
  • Last »
  • You cannot start a new topic
  • This topic is locked

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users

Sponsored link
https://www.urbanterror.info/members/donate/


Copyright © 1999-2024 Frozensand Games Limited  |  All rights reserved  |  Urban Terror™ and FrozenSand™ are trademarks of Frozensand Games Limited

Frozensand Games is a Limited company registered in England and Wales. Company Reg No: 10343942