Giter Site home page Giter Site logo

ioquake / ioq3 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from id-software/quake-iii-arena

2.3K 130.0 522.0 81.89 MB

The ioquake3 community effort to continue supporting/developing id's Quake III Arena

Home Page: https://www.ioquake3.org/

License: GNU General Public License v2.0

C 97.48% CMake 0.22% Assembly 0.31% Objective-C 0.14% GLSL 0.30% HTML 0.35% Shell 0.25% Makefile 0.41% NSIS 0.05% Yacc 0.02% Roff 0.10% Perl 0.05% Rich Text Format 0.01% VBScript 0.01% AMPL 0.01% C++ 0.30%
fps fps-game fps-engine game game-development game-engine game-engine-3d game-engine-development quake3 quake-3 hacktoberfest

ioq3's Issues

Occasionally in-game sounds are not played

Preface: Since the 1.36 version of ioquake 3 from the homepage stopped working recently (since what feels like the last OS update to Mac OS 10.11.3 it always crashes at launch, just after switching to a black screen) I got the latest source here from github and compiled it. The good news is that it doesn't crash, however there is an issue with audio:

When playing normally, occasionally single in-game sounds are not played. Sometimes picking up an object doesn't play the usual sound, or shooting or hitting, or jumping etc. even though most of the sounds are played most of the time. Also the voice saying "impressive" etc. while in-game is never played at all (though that's ok for me) but it does come at the end of a single-player game.

Thanks for looking into this, and let me know if there is any way I can help.

Screen brightness setting not honored (OS X 10.11)

I have the screen brightness slider all the way up and if I click it with the mouse, the brightness is correctly applied. However, if I close the game and reopen it, the slider is at the same position, but brightness dials down significantly. It only fixes itself if I click the slider knob again.

 Model Name:    MacBook Pro
 Model Identifier:  MacBookPro11,5
 Processor Name:    Intel Core i7
 Processor Speed:   2.5 GHz
 Number of Processors:  1
 Total Number of Cores: 4
 L2 Cache (per Core):   256 KB
 L3 Cache:  6 MB
 Memory:    16 GB
 Boot ROM Version:  MBP114.0172.B07
 SMC Version (system):  2.30f2

 Chipset Model: AMD Radeon R9 M370X
 Type:  GPU
 Bus:   PCIe
 PCIe Lane Width:   x8
 VRAM (Total):  2048 MB
 Vendor:    ATI (0x1002)
 Device ID: 0x6821
 Revision ID:   0x0083
 ROM Revision:  113-C5670E-777
 gMux Version:  4.0.20 [3.2.8]
 EFI Driver Version:    01.00.777

SO_REUSEADDR option for socket

I use systemd and systemd.socket activation for ioq3ded server. I found the problem that server cannot bind to default port 27960 on start because systemd already use it for listening. The only workaround I found is to set SO_REUSEADDR for socket in net_ip.c and rebuild server from sources. Can this option be added by default?

I can provide pull request with net_ip.c file. Not sure if is it better to have separate variable for that.

Player Positions

I'm trying to find out how I can log player positions, is there any way of doing this? Any help would be amazing!

Issue with building on ubuntu-mate 16.04 powerpc

i have libsdl2-dev 2.04 and libsdl2 2.04 on my system but dont build
LD build/release-linux-ppc64/ioquake3.ppc64
/usr/bin/ld: skipping incompatible /usr/local/lib/libSDL2.so when searching for -lSDL2
/usr/bin/ld: skipping incompatible /usr/local/lib/libSDL2.a when searching for -lSDL2
/usr/bin/ld: skipping incompatible //usr/lib/powerpc-linux-gnu/libSDL2.so when searching for -lSDL2
/usr/bin/ld: skipping incompatible //usr/lib/powerpc-linux-gnu/libSDL2.a when searching for -lSDL2
/usr/bin/ld: skipping incompatible //usr/local/lib/libSDL2.so when searching for -lSDL2
/usr/bin/ld: skipping incompatible //usr/local/lib/libSDL2.a when searching for -lSDL2
/usr/bin/ld: cannot find -lSDL2
collect2: error: ld returned 1 exit status
Makefile:2054: recipe for target 'build/release-linux-ppc64/ioquake3.ppc64' failed
make[2]: *** [build/release-linux-ppc64/ioquake3.ppc64] Error 1
make[2]: Leaving directory '/home/amigaone/src/ioq3'

Map loading: some maps produce MAX_PATCH_PLANES error.

Not sure if this is relevant or of some interest:
Some maps won't load in ioquake3 anymore, whereas they will load without problems in vanilla Q3.
Motivated by another ones post (at ioquake3 forums) I investigated a bunch of maps that will not load and at least will give an error message.

Here are two maps I found: http://ws.q3df.org/map/a-spec-q3dm2/
and also: http://ws.q3df.org/map/wangctf1/
NOTES:

  1. Both renderers will fail to load the maps (assuming this is related to rendering).
  2. At least on my system the maps won't load: Win 8, Nvidia GTX 770, enough RAM for Q3 :)
  3. iirc the maps were loading in ioquake3 as well, in the past.

NOTE: The maps are custom Q3 maps, NOT QuakeLive maps!

RoQ2 tools ?

Does ioq3 support RoQ/RoQ2 ?

If so, is there a code, compileable with MSVC2013 CE / MSVC2015 CE / gcc (linux) available? (hopefully configurable with cmake)

Thank you.

Where is bspc?

The upstream source release of the idtech3 engine contains the bspc command-line tool in code/bspc. Why isn't it also part of ioq3? The closest I could find is this repository: https://github.com/bnoordhuis/bspc

But it has a lot of overlap with ioq3, requiring code duplication and hackery, and it doesn't seem to have been updated in two years. Would it be possible to integrate that repository into this one? After all, all the code comes from the same source and is under the same license.

Mouse doesn't work at all

Any tips how to debug?

X1C3:~/.local/share/xorg$ grep -i mouse Xorg.0.log | sed 's/^/    /'
[    12.777] (==) intel(0): Silken mouse enabled
[    12.913] (--) evdev: PS/2 Synaptics TouchPad: Found 3 mouse buttons
[    12.913] (II) evdev: PS/2 Synaptics TouchPad: Configuring as mouse
[    12.913] (II) XINPUT: Adding extended input device "PS/2 Synaptics TouchPad" (type: MOUSE, id 11)
[    12.913] (II) config/udev: Adding input device PS/2 Synaptics TouchPad (/dev/input/mouse0)

http://s.natalian.org/2015-02-18/q3.log

Running Archlinux on Broadwell with https://aur.archlinux.org/packages/io/ioquake3-git/PKGBUILD

Tag a release?

Could ioq3 tag a source release so packages can be built? I don't see a release of sources on the ioquake3 website... just binaries.

Dynamic lighting is broken

I noticed in ioquake3 (the latest git) that the dynamic lighting is broken. Can someone please figure out where the bug is in the renderer dlls (if there is any making this bug happen) & fix it?

Error correction codes for faster and more reliable network communications

This is an enhancement proposal.

Currently the ioq3 engine uses replication of UDP packets to ensure that the communication is reliable.

However, a more reliable, faster way and using less bandwidth than replication would be to use error correcting codes, with the only cost being a bit more CPU consumption on the server and on the client sides.

For example, this C++ library could be a good starting point (it's exactly about using error correcting codes for reliable UDP communications, but it's in CPP...): https://github.com/catid/shorthair

There are a lot of other C libraries implementing Reed-Solomon, so that reinventing the wheel should not be necessary here. But shorthair is a good example for the actual implementation for UDP packets management, even if another library is used in the end.

As stated by the shorthair project:

Advantages of using erasure codes in online games:

  • 50% faster delivery over UDP than over TCP
  • 50% less bandwidth used than naive redundancy
  • 50% better recovery rate than parity redundancy

Also, this library shows how to compute the ecc rate to achieve the target loss rate, so that a server configurable variable could be advantageously added for servers admins to setup the loss rate they are expecting. This rate would then be sent to the clients inside the connection string along with other variables.

I do not see ECC as a replacement for the current replication scheme of UDP packet, but it could be a complement (because anyway if an UDP packet was already received, it will be discarded). This would probably allow for smoother gameplay across long distances such as EU players on a US server.

Input sampled on wrong side of frame limiter

Test:

  • com_maxfps 1 in front of a spinning item pickup
  • Move mouse between frame updates

Expected behavior:

  • Cursor moves on the very next frame update

Gotten behavior:

  • Cursor moves on the frame update after that

The actual issue, from what I can tell, is that the framerate limiter is part of the thinking code itself, and the input is outside of that. Either IN_Frame would have to be shoved inside of Com_Frame, out of logical scope, or Com_Frame would have to be split up to different functions between framerate limiting and "thinking".

Why is this an issue? Some mods, like CPMA, forcibly limit framerate online. CPMA limits framerate to 125. This forces the total average input latency from the game to always be 12ms. On a machine with infinite processing power, with input sampled on the right side of the framerate limiter, the added input latency from 125fps should be 4ms, or half of the frame time, for continuous inputs. The difference is the 8ms added by basically delaying inputs for up to 1/125th of a second due to sampling them on the wrong side of the frame limiter. The added lag decreases as the FPS cap approaches the com_maxfps 0 framerate, but it's always there.

input -> limiter -> think -> repeat

The limiter sleeps between taking inputs and using them.

limiter -> input -> think -> repeat

The limiter correctly extends the thinking time on the end instead of the beginning.

build exit with error because cant be negative define CurlchkszEQ(t, s) sizeof(t) == s ? 1 : -1

i face it on Quad G5 and On X5000 too ..
this is in /libcurl-7.35.0/curlrules.h

dont build exit with error because this cant be negative

define CurlchkszEQ(t, s) sizeof(t) == s ? 1 : -1

define CurlchkszGE(t1, t2) sizeof(t1) >= sizeof(t2) ? 1 : -1

i switched in:

define CurlchkszEQ(t, s) sizeof(t) == s ? 1 : 1

define CurlchkszGE(t1, t2) sizeof(t1) >= sizeof(t2) ? 1 : 1

and build was continue

Override default master for the in-game GUI and fix server DNS caching issue

master server
The default master server of master.quake3arena.com appears to be down permanently. Players/clients are not able to use the default in-game server browser. We need to override this configuration in all cases to point to master.ioquake3.org as well as solving the caching issue in #161

Servers should still report to master.quake3arena.com in case it comes back online.

Renderer: potential buffer overrun if not enough space for swap buffers command

The following comes from code/renderergl1/tr_cmds.c in RE_EndFrame:

    cmd = R_GetCommandBuffer( sizeof( *cmd ) );
    if ( !cmd ) {
        return;
    }
    cmd->commandId = RC_SWAP_BUFFERS;

    R_IssueRenderCommands( qtrue );

If R_GetCommandBuffer returns NULL, then the swap buffers command cannot be added to the command buffer, and RE_EndFrame returns early. As the render commands are never executed (and the command buffer size is not reset), the tr.refdef.drawSurfs array is continually appended to every "frame", until tr.refdef.numDrawSurfs exceeds MAX_DRAW_SURFS and the game potentially crashes.

R_IssueRenderCommands looks like it ignores whether swap buffers happens and simply appends the end of list command, executes the commands, and then resets the command buffer. Even if this was called early to reset the command buffer, it would still be an issue because none of the subsequent frames are swapped and the player would just see the last frame that was swapped.

OpenGL2: Specular effect doesn't draw over brushes without transition.

The specular effect does take edges of multiple brushes into account. On the edge of some brushes the specular effect stops, and on the adjacent brush the specular effect is seen from another view angle.
This issue is better to see with a higher r_baseSpecular value (> 0.3).

Possibly not using r_baseSpecular ?

How to reproduce:

  1. Start q3tourney6
  2. Go into Spectator mode.
  3. Fly under one of the main platforms.
  4. Have a look at the bottom of the floor brushes.
  5. There are artefacts, depending on view angle.

I attached a screenshot from q3tourney6:
shot0002

ioquake3 crashes trying to download a pk3 file

Version from today, while trying to download, ioquake3 crashes. Stacktrace:

87074 times this line:
#87075 0x0000000000467367 in qcurl_easy_setopt_warn (curl=, option=) at code/client/cl_curl.c:235
#87076 0x0000000000467367 in qcurl_easy_setopt_warn (curl=, option=) at code/client/cl_curl.c:235
#87077 0x0000000000467367 in qcurl_easy_setopt_warn (curl=, option=option@entry=CURLOPT_URL) at code/client/cl_curl.c:235
#87078 0x00000000004674af in CL_cURL_BeginDownload (localName=localName@entry=0xec29d0 <clc+148912> "excessiveplus/z-xp-2_3.pk3",

remoteURL=0xd778a0 <string+32000> "http://xyz.com/somedir/excessiveplus/z-xp-2_3.pk3") at code/client/cl_curl.c:286

#87079 0x000000000041f577 in CL_NextDownload () at code/client/cl_main.c:2216
#87080 0x000000000041f6b2 in CL_InitDownloads () at code/client/cl_main.c:2286
#87081 0x0000000000424b31 in CL_ParseGamestate (msg=msg@entry=0x7ffd8e4308b0) at code/client/cl_parse.c:548
#87082 0x0000000000425018 in CL_ParseServerMessage (msg=msg@entry=0x7ffd8e4308b0) at code/client/cl_parse.c:919

---Type to continue, or q to quit---
#87083 0x0000000000422b2f in CL_PacketEvent (from=..., msg=msg@entry=0x7ffd8e4308b0) at code/client/cl_main.c:2809
#87084 0x0000000000456a4c in NET_Event (fdr=fdr@entry=0x7ffd8e4349d0) at code/qcommon/net_ip.c:1641
#87085 0x0000000000456e33 in NET_Sleep (msec=) at code/qcommon/net_ip.c:1698
#87086 0x000000000043c273 in Com_Frame () at code/qcommon/common.c:3127
#87087 0x0000000000405012 in main (argc=, argv=) at code/sys/sys_main.c:686

q3config.cfg loaded twice with Com_GameRestart

When Com_GameRestart is called, the q3config.cfg is loaded twice. I'm not sure if this is the source of seeing the spam of latched cvars needing to be changed on restart during this case or not but it gets called in FS_Restart via Com_GameRestart (only q3config.cfg) and then later in Com_GameRestart the Com_ExecuteCfg is called.

ioquake3 is lacking releases

Hi,

Fedora ioquake3 package maintainer here. I think that it is great to see that ioquake3 is still seeing active development. But as a Linux distro packager I would really like to see you do releases, or at a minimum do git tags at points in time when you consider the code to be fully stable / tested. E.g. when you build new binaries for your download page.

For example it would be good to know from which git commit the official 1.36.7.1 Linux binaries are builds. Using git tags for this will also make your own live easier when you get bug-reports for the official binaries.

Thanks & Regards,

Hans

Non-portable use of va_args

The VM_Call function in vm.c currently uses variable arguments in a very awkward fashion in order to fake "default arguments" for function parameters: va_arg(ap, int) is called 12 times unconditionally, independent of how the function was actually called.

This has undefined behaviour and is not portable. It will typically read outside the stack frame and throw off memory analysers.

I'm not sure how to solve this in C89, but if you are willing to require C99, this could be solved with a compound literal:

#define VM_Call(VM, ...) VM_Call_Impl(VM, &(int[13]){__VA_ARGS__})

intptr_t VM_Call_Impl(vm_t *vm, int (*args)[13]) {
  int callnum = (*args)[0];  // etc.
}

What do you think of such a change?

Annoying aural bugs (at least for me they are)

impressive_a.wav & excellent_a.wav should be used if anyone except you in any gametype earned those awards, & hit_teammate.wav should also be played if you hit any of your teammates in TDM/CTF/etc. None of these sounds are used currently, but there IS code for the hit_teammate.wav sound to play however (which is kinda strange). I reported this very bug @ zturtleman/spearmint#273. EDIT: It turns out they're used for awards after an SP level.

r_overbrightbits behavior GL1 vs GL2

In GL1, r_overbrightbits does not affect the brightness of fullbright objects (armor, parts of ammo pickups, quad damage, etc). In GL2, it does. r_overbrightbits is 1 by default, so this makes armor and everything twice as bright in GL2.

If r_overbrightbits will affect the brightness of this kind of object in GL2, there should at least be a 1 bit penalty to this kind of object so that it looks the same as GL1 on default settings.

It looks like armor, quad, and the fullbright part of health pickups get bitshifted twice, while health does not.

Integer overflow in snd_mem.c

ResampleSfx() and ResampleSfxRaw() in snd_mem.c resample the input audio file to the audio driver's sampling rate. The multiplication by 256=2^8 and subsequent bitshift by 8 bits to the right of the buffer offset allow for an upscaling of input frequencies as low as 1/256 of the target sampling rate, but they reduce the resulting maximum number of samples by 8 bits. This allows only for 95 seconds of playtime at 44.1 khz or 190 seconds at 22 khz. After that, samplefrac overflows.

One "fix" would be to change 2^8 and 8 to smaller values, maybe 2^3=8 and 3, and add a warning message if the sampling rate is too small.

OpenGL2: r_ext_framebuffer_multisample draws flares through mirrors.

When flares are enabled (r_flares 1), and r_ext_framebuffer_multisample is > 1 than flares are seen through mirrors.

How to reproduce:

  1. Start q3tourney6
  2. set r_flares 1, r_ext_framebuffer_multisample 2.
  3. Go to the BFG platform.
  4. Have a look at the mirror floor at this platform.
  5. You can see the flares from the main platform shining through the mirror floor.

Screenshot from q3tourney6:
shot0003

making auto-downloading safer

ioquake3 developers currently recommend that auto-downloading should always be disabled. For instance, in the advisory for CVE-2011-2764:

Quake3 was never really designed to be secure against malicious 3rd party content, and probably isn't even in latest revisions of ioquake3. So downloading of untrusted content is still discouraged.
...
workaround: Don't download and install untrusted addons. Set cl_allowdownload to 0

This is a shame, because auto-downloading is clearly something that people use - if they didn't, there would have been no point in making it better by integrating cURL support - and it's very convenient to be able to download map packs, models/skins and other non-executable content.

ioquake3 has historically treated it as a security vulnerability if there is a known exploit allowing an auto-downloadable mod to escape from the QVM sandbox and execute arbitrary native code (e.g. CVE-2011-3012). However, some Quake III-derived games use native-code for their mods and thus cannot limit mods' capabilities at all, e.g. Jedi Knight II, Jedi Academy and RTCW. Open-source versions of those games continue to support unpacking native-code DLLs from PK3 files and loading them, so that existing mods can continue to work, e.g. JACoders/OpenJK#646.

At the moment, a mod that has been auto-downloaded from a server to a client is indistinguishable from a manually-installed mod. I think this is the key thing preventing auto-downloading from being made safer, and I would like to improve on it. Would ioquake3 developers be interested in merging that change? Whether it gets integrated into ioquake3 master or not, it would be best if this happened in some fork of ioquake3 (GPL-2+), so that the relevant code can legally be imported into both GPL-2-only projects like OpenJK, and GPL-3-only projects like iortcw.

Here is a sketch of one design that I think would address this:

  • When auto-downloading mods, "mark" the auto-downloaded PK3 in some way. The easiest way would be a different file extension, perhaps .dlpk3; or for better compatibility with current ioquake3, a double extension like .dl.pk3 or .auto.pk3 might work.
  • When loading files that are believed to be safe - maps, textures, models - treat all PK3s as equivalent.
  • Are shaders and GLSL in the safe set? I don't know their capabilities.
  • When loading executable content - QVM bytecode, and native DLLs in derived games that do that - refuse to load from auto-downloaded mods, only from manually-installed mods. This could be controlled by a config option, or it could be mandatory; iortcw could potentially have an intermediate setting where QVM bytecode is allowed but native DLLs are not.

Or does anyone have better ideas for solving this?

Buffer overflow renderergl2/tr_bsp.c:2306

Address Sanitizer identified this issue.

Read from uninitialized memory in R_LoadSurfaces() line 2306. surface is a pointer cast over out->data when surfaceType == MST_PATCH.

See line 2279 for the FIXME in lieu of a Hunk_Alloc() or similar call.

Crash log:

=================================================================
==2310==ERROR: AddressSanitizer: global-buffer-overflow on address 0x000101ee174c at pc 0x000101a967d6 bp 0x7fff5e57b2d0 sp 0x7fff5e57b2c8
READ of size 4 at 0x000101ee174c thread T0
    #0 0x101a967d5 in R_LoadSurfaces tr_bsp.c:2306
    #1 0x101a8d7f8 in RE_LoadWorldMap tr_bsp.c:3298
    #2 0x101683529 in CL_CgameSystemCalls cl_cgame.c:546
    #3 0x101a4ebaa in DoSyscall vm_x86.c:436
    #4 0x125a5a051  (<unknown module>)
    #5 0x1098ba987  (<unknown module>)
    #6 0x10187dc5e in VM_Call vm.c:861
    #7 0x10168726a in CL_InitCGame cl_cgame.c:784
    #8 0x1016c45e3 in CL_DownloadsComplete cl_main.c:2067
    #9 0x1016c5a08 in CL_InitDownloads cl_main.c:2335
    #10 0x1016d637a in CL_ParseGamestate cl_parse.c:543
    #11 0x1016d78be in CL_ParseServerMessage cl_parse.c:905
    #12 0x1016ca7ef in CL_PacketEvent cl_main.c:2889
    #13 0x10177a4bb in Com_EventLoop common.c:2177
    #14 0x10177d64b in Com_Frame common.c:2987
    #15 0x10188e978 in main sys_main.c:689
    #16 0x10167e613 in start (tremulous_opengl2.x86_64+0x100001613)
    #17 0x2  (<unknown module>)

0x000101ee174c is located 8 bytes to the right of global variable 'skipData' defined in 'src/renderergl2/tr_bsp.c:832:23' (0x101ee1740) of size 4
SUMMARY: AddressSanitizer: global-buffer-overflow tr_bsp.c:2306 in R_LoadSurfaces
Shadow bytes around the buggy address:
  0x1000203dc290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x1000203dc2a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x1000203dc2b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x1000203----- Client Shutdown (Received signal 6) -----

JSON Build Failure in Linux

For whatever reason, I get the error "code/renderergl2/tr_bsp.c:27:29: fatal error: ..\qcommon\json.h: No such file or directory
compilation terminated." when I attempt to compile ioquake3.

Either there is an obvious solution that I am overlooking, or something needs to be fixed.

lighting issue on a custom map

Hello,
I recently downloaded the map Grindill 2.0 (http://lvlworld.com/comments/id:1691) but when I play it using the ioquake3 engine the lighting is terrible (http://imgur.com/a/p0BQB). I don't have this problem when I play the map using the original quake3 engine. I'm using windows 10. People playing on linux say it's working fine for them. Also, I have a GTX970 graphics card, if that makes any difference.
I hope you'll be able to fix this issue because it really is a cool map
Thanks in advance!

David

cmakelist.txt missing

Trying to build on Windows with Eclipse cdt. Cmake is giving me an error on cmakelist.txt missing. Is there one lying around or do I have to write my own (learn how to).

"pak0.pk3" is missing

➜  ioq3 git:(master) ./make-macosx.sh x86_64
➜  ioq3 git:(master) ./build/release-darwin-x86_64/ioquake3.app/Contents/MacOS/ioquake3
ioq3 1.36_GIT_f4aa39a-2015-08-25 macosx-x86_64 Aug 28 2015
Have SSE support
----- FS_Startup -----
Current search path:
/Users/Nicholas/Library/Application Support/Quake3/baseq3
./build/release-darwin-x86_64/ioquake3.app/Contents/MacOS/baseq3
./build/release-darwin-x86_64/baseq3

----------------------
0 files in pk3 files
"pak0.pk3" is missing. Please copy it from your legitimate Q3 CDROM. Point Release files are missing. Please re-install the 1.32 point release. Also check that your ioq3 executable is in the correct place and that every file in the "baseq3" directory is present and readable

Where am I supposed to put the pak0.pk3 file? Maybe this error message could be updated?

OpenGL2: DM11 and DM12 fail to load (HUNK_ALLOC failed)

DM11 and DM12 both fail to load when playing through the single player campaign mode using the OpenGL2 renderer (works fine with OpenGL1.) The error for DM11 is "HUNK_ALLOC FAILED ON 249696" and for DM12 "HUNK_ALLOC FAILED ON 3594624."

DM12 will load fine if you use skirmish mode regardless of number of bots (only fails from campaign mode) and DM11 will load from skirmish mode IF you use 3 of less bots (any more and it fails and the error number varies depending on how many bots.)

I am using the pak0.pk3 from my retail Quake 3 CD. There may be other maps that fail as well. I haven't tested all of them.

EDIT: I'm using the latest git build, compiled today (g1902b6e.) I was originally using a build from April (04-12-2015, g10c5f0b) and it was broken there too. Also I'm using Arch Linux.

Code Signing on Windows and macOS

Modern operating systems that are protective of their user's data present error messages when our binaries are executed because we don't sign our code. This sucks for our users because they experience extreme friction that prevents them from playing Quake 3 and games based on Quake 3, and it will only get worse for applications that don't sign over time as new operating systems make it more difficult to workaround this security measure and run unsigned code. We should probably fix it on our end, though I would guess you can't do that entirely in public on github because you'd be including our keys for whatever signing authority, perhaps we could at least include some pieces of scaffolding for a future release to sign executables?

In some magical ideal world our test builds from Jenkins would even be code signed.

Apple has documentation for macOS here:
https://developer.apple.com/library/prerelease/content/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html

Which has very easy to read language to explain the situation:

Code signing is a security technology, used in OS X, that allows you to certify that an app was created by you. Once an app is signed, the system can detect any change to the app—whether the change is introduced accidentally or by malicious code.

I'm not immediately finding a good starting point for Windows' code signing, they probably have some marketing name I'm not immediately aware of, will look again when I get a chance.

Unicode or Multi-Byte Character set for MSVC12 (VS2013) solution

I'm creating a Visual Studio solution (msvc12), but usage of non-UNICODE options has been deprecated - gives error
Visual Studio error MSB8031: Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library. See http://go.microsoft.com/fwlink/p/?LinkId=286820 for more information. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets 376 5 quake3

Available solutions are: (from, e.g. http://stackoverflow.com/questions/21360411/visual-studio-unable-to-recognise-my-mfc-library-for-my-webcam-laser-rangefinder)

  1. change all projects to use Unicode
  2. change all projects to use Multi-Byte Character set
  3. install MFC MBCS DLL Add-on (https://msdn.microsoft.com/library/dn251007.aspx)

I would tend to go with 1), but presently the "q3_ui" and "ui" projects are set to use MBCS.

Issue with building on Debian Jessie powerpc

I dont know why doctor close the discussion about ... in any way i tested ioq3 on Debian Jessie .... with the same result of mate

D build/release-linux-ppc64/ioquake3.ppc64
/usr/bin/ld: impossibile trovare -lSDL2
collect2: error: ld returned 1 exit status
Makefile:2054: set di istruzioni per l'obiettivo "build/release-linux-ppc64/ioquake3.ppc64" non riuscito
make[2]: *** [build/release-linux-ppc64/ioquake3.ppc64] Errore 1
--- just for be sure

/src/ioq3# aptitude search libsdl2-dev
i libsdl2-dev

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.