Create an account


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Xonotic vs Quake 3 development comparison

#1
Post the comparison and the differences of the development of these games here. You can include the game and engine differences of both.


I've heard that ioQuake3 has things that doesn't support 64-bit for compilation or something like this. Also, I was thinking of developing a mod within Quake 3, but it can be a bit difficult to do. I share a link about this here: https://gregs-blog.com/2008/01/24/how-to...arena-mod/ 
I enjoyed and played a mod which was started to be developed in 2001, but the source code of this mod was lost and never released...

I see some differences between game and engine sides of these developments. There is a link that explains the source code of Quake 3, about its ways of compiling and architecture: https://fabiensanglard.net/quake3/

As for programming languages, I think that Quake 3 seems written in ANSI C, Xonotic has 2 parts: C for the engine and QuakeC for the game.

I don't know what the details of the differences are missing or what I don't perceive, I see that Quake 3 looks old and Xonotic seems to use an improved engine called Darkplaces and seems coming from Quake 1, I think it's older than Quake 3.
Reply

#2
I didn’t play quake 3(i played the remake is Open arena), but I saw videos of all sorts of tournaments. The first difference is that the machine gun is involved as a weak weapon. And the shotgun is very powerful than the xonotic shotgun, unless of course combined with a flop (unless you use a melee, which is 400x weaker than quake 3 melee). Unlike quake 3 in xonotic, all weapons have secondary fire, and the hagar fires mini missiles, not plasma. The electric combo is very powerful like bfg9k. Can be combined with different weapons, which you can only do with the id tech 5 or more engine. The bazooka has guided missiles, which is not present in quake 3. It is easier to accelerate in xonotic than in quake 3, where the engine is difficult. there is no blaster, that is, there will be no blaster jump. Maps in quake 3 has secrets.

I think i said everything.
My maps:
CTF: Trident_ctf, Moon terror;
DM: Checkfriend, Landing hedge;
Duel: tempullit, X air walker;
Kota-dooM: Kota-dooM, Kota-dooM4 (-2);
Race: Map packs;
Special: Triangle, Mid space 'em.

You can check out my other maps here.
Reply

#3
(09-02-2020, 09:33 AM)Kotangens Wrote: I didn’t play quake 3(i played the remake is Open arena), but I saw videos of all sorts of tournaments. The first difference is that the machine gun is involved as a weak weapon. And the shotgun is very powerful than the xonotic shotgun, unless of course combined with a flop (unless you use a melee, which is 400x weaker than quake 3 melee). Unlike quake 3 in xonotic, all weapons have secondary fire, and the hagar fires mini missiles, not plasma. The electric combo is very powerful like bfg9k. Can be combined with different weapons, which you can only do with the id tech 5 or more engine. The bazooka has guided missiles, which is not present in quake 3. It is easier to accelerate in xonotic than in quake 3, where the engine is difficult. there is no blaster, that is, there will be no blaster jump. Maps in quake 3 has secrets.

I think i said everything.

Thank you, but it's a weapons power comparison, I'm not searching this.

This is a development/programming thread, we aren't talking about entertainment or things of the weapons/characters/maps from these games in a gameplay perspective. This is about comparing the source code of software and development of the systems functioning.
Please, don't post comments about things hardly related in this thread, thanks.
Reply

#4
Engine

Darkplaces is a Quake I source port / engine; it has real-time rendering of shadows and lights, supports high resolutions, have bloom settings, enhanced particle effects, sound interpolation, experimental ODE physics implementation, doesn't have VoIP support... Supports DPM, IQM, ZYM, MD3, MDL model files. More info here.

There are some engines modified from ioQuake3, in terms of rendering and implementation topics. Nowadays, ioQuake3 has VoIP support (you need Mumble program (client and server) and if you want to open a server from the game, a Mumble server should be opened to use voice chat too), OpenAL support, PNG support; supports MD3 and IQM (for character models) model files, ... ioQuake3 engine code is cleaner than id tech 3 (original engine), has fixed several bugs and tons of stuff changed to enhance the engine, more info look this README

Hardware requirements

Quake 3 can run fine with a Pentium CPU and 512MB RAM. According to Focus on Mod Programming for Quake III Arena book says that:

The required specifications for Quake III modding are as follows:
■ Processor. Pentium II 300+ MHz (Pentium III 500 MHz+ recommended)
■ Operating system. Windows 95/98/ME/2000/XP
■ Video card. 8MB RAM (3D graphics card recommended)
■ Memory. 64MB (128MB recommended)
■ Hard disk. 500MB minimum for installation of Quake III and tools
■ Compiler. Visual C++ recommended

Xonotic, now, can run with a minimum of 2GB RAM, recommended at 4GB RAM, a 1.6 GHz single-core CPU and a minimum of 2GB HDD space required. It can run the following platforms: Windows 7 or newer (x86 or x86-64), Linux with glibc (libc6) 2.29 or newer (x86-64), macOS (x86-64).

Compiled files (gamecode)

In Quake 3, the compiled files of gamecode part are cgame.qvm, qagame.qvm and ui.qvm. Additionally, there is something new in ioQuake 3, now you can obtain compiled DLL files (cgamex86_64.dll, qagamex86_64.dll and uix86_64.dll) instead QVM files, even you obtain both after compiling. QVMs are compiled by a modified version of LCC.

In Xonotic, you obtain csprogs.datprogs.dat and menu.dat programs after compiling, similar to the compiled files from Quake I.
More info: Programming QuakeC stuff in Xonotic - section 1

Programming in the gamecode

In Quake 3, the game logic is written in C 1989 Standard (ANSI C) with C++ style comments and incomplete reimplemented C standard library.

In Xonotic, the game logic is written in QuakeC but looks like closer to C without pointers and structs, and has some little differences from Quake I gamecode, moreover uses gmqcc compiler.

Cvar declaration in the gamecode

In Quake 3, when you need to declare some cvar in the code, you've to do like in this example: 

- In game/g_main.c, add this where you can see the vmCvar_t list:
Code:
vmCvar_t   g_disableGauntlet;

After, inside static cvarTable_t gameCvarTable[] = { add this line under g_gametype one:
Code:
{ &g_disableGauntlet, "g_disableGauntlet", "0", CVAR_SERVERINFO | CVAR_USERINFO | CVAR_LATCH, 0, qfalse  },

And in G_RegisterCvars function, add this after g_gametype conditional if:
Code:
if ( g_disableGauntlet.integer >= 1 )
{
   G_Printf( "Gauntlet weapon disabled, to enable: 'g_disableGauntlet 0' and restart \n" );
   va("print \"Gauntlet weapon disabled, to enable: 'g_disableGauntlet 0' and restart.\n\"");
   trap_Cvar_Set( "g_disableGauntlet", "1" );
   trap_Cvar_Update( &g_disableGauntlet );
}

- In game/g_local.h, add this in extern vmCvar_t list:
Code:
extern vmCvar_t g_disableGauntlet;

- And finally in game/g_client.c, inside ClientSpawn() you will see these lines:
Code:
   client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_GAUNTLET );
   client->ps.ammo[WP_GAUNTLET] = -1;

Then replace to this:
Code:
if( g_disableGauntlet.integer <= 0 )
{
   client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_GAUNTLET );
   client->ps.ammo[WP_GAUNTLET] = -1;
}

Finally, compile the code, copy the compiled qvm, run the game (you can launch quickly typing quake.exe +map q3dm17), in console write and execute the cvar: \g_disableGauntlet 1
restart and enjoy without the gauntlet! Cool

REFERENCE: Quake3World forums - Programming Discussion - thread 1077266


In Xonotic, the cvar declaration is direct and automatic. Simply, write this in the code: 
Code:
bool autocvar_g_something;


After, if you want to detail cvar description, you've to open some cfg (like mutators.cfg, xonotic-server.cfg, ...) and write the following line:
Code:
set g_something 0 "Displays something"

And alternatively when you want to create the described cvar only by code, there is a AUTOCVAR function in a library. Write in a line: 
Code:
AUTOCVAR(g_something, bool, false, "Display something"); 

Map support and shaders

Quake 3 and Xonotic, both support BSP maps. Maps can be built in NetRadiant / gtkRadiant tools. Xonotic can use Darkplaces shader system and Q3A shader system
While Quake 3 can use Q3A shader system, but it doesn't look compatible with Darkplaces shaders. Q3 shader manual isn't up to date with the shaders used in Darkplaces.
Both support pk3dir feature; paths in a game directory with the extension ".pk3dir" are treated like pk3 files. This means you can keep all files specific to your map in one directory tree and easily zip this folder for distribution.
Reply

#5
Crosslink: https://www.quake3world.com/forum/viewto...16&t=55017

About Quake 3 cvar, I found a way to implement the cvar code to declare a cvar in a single-line. This makes the development simpler.

Credits: Razor from OpenJK

Here the commit as sample reference:
https://github.com/LegendaryGuard/BFP/co...5384c9649a
Reply



Possibly Related Threads…
Thread Author Replies Views Last Post
  Samual's Personal Development Roadmap Samual 40 54,117 11-10-2021, 03:18 AM
Last Post: chooksta
  What was easy for you in development? (Darkplaces and QuakeC programming) LegendGuard 2 3,059 08-08-2020, 05:25 PM
Last Post: LegendGuard
  Quake live mouse acceleration implementation successfully coded! I have questions Draena 0 2,508 03-09-2020, 05:29 PM
Last Post: Draena
  development and life cycle of a game community BuddyFriendGuy 9 11,866 04-04-2015, 01:58 AM
Last Post: BuddyFriendGuy
Exclamation Development Infrastructure Update divVerent 16 24,237 12-11-2014, 02:11 PM
Last Post: Mr. Bougo
  The fate of Xonotic development MirceaKitsune 35 37,144 09-26-2014, 02:24 AM
Last Post: poVoq
  Xonotic Game Engine, Mapping, Development - General Developer Questions p14r 6 10,886 08-04-2014, 10:24 AM
Last Post: p14r
  Quake's monsters in Xonotic Mario 41 44,930 05-28-2014, 12:16 AM
Last Post: unfa
  q3map2 issues/development vulture 18 28,568 03-04-2014, 11:31 AM
Last Post: Garux
  Limiting factors in Xonotic development & solutions MirceaKitsune 15 15,705 09-12-2013, 03:08 PM
Last Post: poVoq

Forum Jump:


Users browsing this thread:
1 Guest(s)

Forum software by © MyBB original theme © iAndrew 2016, remixed by -z-