Git Product home page Git Product logo

joequake's Introduction

Description

JoeQuake is a custom Quake engine designed exclusively for speedrunning.
It was originated from the official id software GLQuake source code.

JoeQuake features several improvements over the vanilla GLQuake client, just to name a few:

  • Independent server-client physics
  • Ghost mode recording
  • Browsable Demos/Maps/Mods menus
  • Restructured, more detailed Options menu
  • Mouse cursor in menu
  • Supporting FitzQuake and RMQ protocols
  • Supporting a wide range of custom mods (including Quake remastered)
  • Colored static and dynamic lighting
  • External texture formats (TGA/PNG/JPG)
  • Capturing demos to AVI file

Binaries

Windows

You can download JoeQuake Windows (x86) releases here:

http://joequake.runecentral.com/downloads.html

Linux

Unfortunately this main fork does not provide any Linux binaries. You may compile your own Linux binaries from the following JoeQuake contributors (look for linux related branches):

https://github.com/kugelrund/JoeQuake

https://github.com/matthewearl/JoeQuake-1

License and Warranty

JoeQuake is released under the GNU GPL license. You may freely redistribute or modify JoeQuake as you wish.

Credits

Contributors

  • Jozsef Szalontai - lead programmer
  • Sphere - server/client bugfixes, several QoL improvements
  • Matthew Earl - entire ghost recording feature, SDL port

Authors whose code was re-used in JoeQuake

  • A. "Fuh" Nourai (FuhQuake additions)
  • Anton "Tonik" Gavrilov (ZQuake additions)
  • QuakeSpasm developers for every QS addition and their useful hints, tips
    • John Fitzgibbons
    • Ozkan Sezer
    • Eric Wasylishen
    • Axel Gneiting
    • Andrei Drexler
    • Spike
  • Creators of the Minizip library: http://www.winimage.com/zLibDll/minizip.html
  • [email protected], for alias model interpolation
  • LordHavoc, for lerping alias model textures
  • Alexander Kovalchuk, for plenty of [sons]Quake additions
  • Anthony Bailey, for the avi capturing code
  • Slawomir Mazurek, for his help on linux
  • CrashFort, for NeaQuake additions
  • R00k, for Tremor/QRack additions

Inspirational persons

  • Attila Csernyik
  • Thomas Stubgaard
  • Denis Nazarov
  • Martin Selinus
  • Nolan Pflug
  • people @ RuneCentral forum, especially Baker and Sputnikutah
  • people @ QuakeSpeedrunning discord channel

External resources

The JoeQuake package contains hi-resolution images made by the following artists:

  • menu graphics, HUD icons, character sets by Moon[Drunk]
  • HUD player faces by PrimeviL
  • console background by Joseph "BootGuyJoe" Hanley
  • mouse cursor (unknown artist, found on gfx.quakeworld.nu)
Jozsef Szalontai
[email protected]

joequake's People

Contributors

j0zzz avatar kugelrund avatar matthewearl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

joequake's Issues

Headless video rendering

Hi there, I'm a longtime user and fan of Joequake. I was wondering if it's possible to do headless video capturing, i.e. rendering video to a file without starting the graphical interface itself, and just using command line. I thought it might be nice to be able to automate this for bulk capture and processing of demo files. Headless mode would just make it a bit easier on my computer and potentially less of a nuisance while doing other things.

As far as I can tell it's not possible, but maybe there are potentially other solutions to this?

issue with swinging blades in AD

Swinging blades are black in ad_magna and ad_necrokeep

Tested in QuakeSpasm and they look good.

joequake000
joequake001

There's also swinging blades in ad_lavatomb, but those look good.

"-quoth" command line option

I've noticed people have trouble loading Quoth mods in JoeQuake.

QuakeSpasm (looks like its originally from FitzQuake) has a -quoth command line option for loading Quoth and Quoth based mods.

Make fog permanently switchable ON/OFF

Right now the only way to switch off fog is to enter 'fog xy' at every map start.
To overcome this problem, a cvar could be introduced to store custom values of fog parameters.

crosshair 2 collides with hidden hipnotic feature

Hipnotic mission pack has a hidden feature of playing footsteps when quake guy is walking around. Oddly enough this is enabled by setting crosshair 2. See https://www.gog.com/forum/quake_series/quake_scourge_of_armagon_by_hipnotic_real_footsteps_sounds . I suppose back then they were sure people would only ever have crosshair 0 or crosshair 1.

Unfortunately, the alternate crosshair that JoeQuake provides with crosshair 2 collides with this. So if you want to have that crosshair, then you are forced to play hipnotic with rather ugly footstep sounds that even end up in the demo.

A simple (fully backwards compatible) solution could be to add another crosshair (crosshair 8) that is just the same as crosshair 2 which can then be used for playing hipnotic with that crosshair but without footstep sounds. Another option could be to add a new cvar entirely (cl_customcrosshair or something like that) and use that for selecting custom crosshairs (and maybe keep the old crosshair >= 2 working for backwards compatibility, but don't encourage it anymore). Could also do a variant of any of those two options and not care about backwards comptatibility I suppose, it's not the worst breaking change, users will figure it out. Any thoughts?

Last frame of a demo is messed up

joequake000

Thanks to https://github.com/andrei-drexler for all the info.

I spent a bit of time debugging this, and the short version is that after the demo ends, the 3d scene is no longer rendered, but the intermission screen still is, effectively on top of garbage memory. The sequence of events that causes this is:

  • svc_disconnect is parsed, calling Host_EndGame, which in turn calls CL_Disconnect, which sets cls.signon to 0

    JoeQuake/trunk/cl_parse.c

    Lines 1264 to 1265 in 69b8359

    case svc_disconnect:
    Host_EndGame ("Server disconnected\n");

    JoeQuake/trunk/host.c

    Lines 127 to 128 in 943c135

    if (cls.demonum == -1 || !CL_NextDemo())
    CL_Disconnect ();

    cls.signon = 0;
  • when the next frame is rendered, SCR_UpdateScreen calls SCR_SetUpToDrawConsole, which sets con_forcedup to 1
    SCR_SetUpToDrawConsole ();

    con_forcedup = !cl.worldmodel || cls.signon != SIGNONS;
  • SCR_UpdateScreen then calls V_RenderView, which checks con_forcedup and returns (without clearing the screen or rendering anything)

    JoeQuake/trunk/view.c

    Lines 1482 to 1485 in 53032d6

    void V_RenderView (void)
    {
    if (con_forcedup)
    return;
  • SCR_UpdateScreen continues, reaching a block of code that checks if cl.intermission is 1 and if key_dest is key_game, and then proceeds to render the intermission screen

    JoeQuake/trunk/gl_screen.c

    Lines 1115 to 1122 in dfe905f

    else if (cl.intermission == 1 && key_dest == key_game)
    {
    Sbar_IntermissionOverlay ();
    SCR_DrawVolume ();
    if (con_notify_intermission.value)
    SCR_DrawConsole();
    }

An easy fix would be to reset cl.intermission to 0 in CL_Disconnect, which is what QS and vkQuake do:
https://github.com/sezero/quakespasm/blob/065c1582548dd8e25f5102882d5293d5a6cb7add/Quake/cl_main.c#L135
https://github.com/Novum/vkQuake/blob/5279c8aafb50487fa24480decafbc0dc10ae22dc/Quake/cl_main.c#L171

Errors in console with new AMD drivers

AMD did some serious work on their Open GL drivers recently. I'm getting about double the FPS on some maps.

But with that came some errors in the console.

joequake000

ghost: support marathon demos

As the title suggests. Specifically the type where all the levels are in a single .dem file (the kind that JoeQuake now produces). In terms of implementation it will be easiest to have the ghost start in sync with the player at the start of each level, rather than carrying over time delta from the previous level. It'd be nice to have the option of carrying the time delta over, though.

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.