Well said. I completely agree.<br><br><div class="gmail_quote">On Tue, Apr 8, 2008 at 11:48 PM,  &lt;<a href="mailto:monk@rq3.com">monk@rq3.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
[please do not mistake my length of emails for me being angry or<br>
flaming--I&#39;m just verbose!]<br>
<br>
The mod that I work on, Reaction Quake 3 (now called &quot;Reaction&quot;), is<br>
basically a port of the Quake 2 mod Action Quake 2 to the Q3 engine. &nbsp;It<br>
had a source release of AQ2 version 1.52. &nbsp;Many many projects (40+ that I<br>
know of) sprang forth and added a ton of different features and options.<br>
<br>
By the time we started making RQ3, the concept of &quot;AQ2&quot; was muddied by the<br>
playerbase. &nbsp;In north america, the &quot;standard&quot; was one fork. &nbsp;In europe,<br>
the &quot;standard&quot; was another fork. &nbsp;The RQ3 team is comprised of people from<br>
all over the world (had an Aussie for a while too).<br>
<br>
How to reconcile what we were making with what people thought we should be<br>
making? &nbsp;The way I approached this was to set a baseline of the original<br>
AQ2 1.52 featureset. &nbsp;Whatever else we did, we had to replicate the<br>
gameplay of AQ2 1.52. &nbsp;Once we had that down, it didn&#39;t matter if we<br>
extended the gameplay to emulate any of the forks as long as it was<br>
configurable by the server admin.<br>
<br>
The point was that no matter what, we had that one baseline that everyone<br>
could fall back to.<br>
<br>
When you discuss shoving a new syscall down everyone&#39;s throats, to me I am<br>
interpreting this as a programmer talking. &nbsp;A programmer doesn&#39;t want a<br>
ton of extraneous fluff in their code. &nbsp;If the code&#39;s not being used, why<br>
keep it around? &nbsp;Tight, easy-to-read code is the ideal.<br>
<br>
However, from an end-user or mod-creator perspective, you can&#39;t take<br>
advantage of what&#39;s not available. &nbsp;Adding a new syscall or extending ioq3<br>
is not the same thing as changing the default behavior and compability,<br>
right? &nbsp;It&#39;s the same situation as though some mods weren&#39;t using some<br>
syscalls. &nbsp;Is that a reason to remove them? &nbsp;Do they hurt anything by<br>
being available to be used? &nbsp;Not in my mind.<br>
<br>
In RQ3 we added a bunch of new map entities and abilities; breakable<br>
glass, exploding things when shot, door handles that moved, etc. &nbsp;If I<br>
recall correctly, we were able to easily modify the existing mapping tool<br>
(gtkradiant?) to expose the new functionality for our mod.<br>
<br>
Adding new syscalls and abilities to ioq3 shouldn&#39;t be a problem. &nbsp;As long<br>
as someone knows how to use them, they will be using them with full<br>
knowledge that using them will break their game&#39;s compatibility with<br>
baseq3 1.32.<br>
<br>
It&#39;s not your job to make sure mod creators or someone forking ioq3 makes<br>
their game work on baseq3 1.32. &nbsp;It&#39;s your job to make sure ioq3 doesn&#39;t<br>
break existing, legacy mods. (hehhe &quot;job&quot;, you know what I mean...) &nbsp;As<br>
long as extending ioq3 doesn&#39;t break anything and it works on most (all,<br>
ideally) platforms, I don&#39;t see why you couldn&#39;t include new things.<br>
<br>
Sure, propose an extension, discuss its merits, decide if it&#39;s something<br>
that people are wanting or using in the real world. &nbsp;Don&#39;t just include<br>
every ol&#39; thing of questionable value. &nbsp;But ioq3 is such a solid base, if<br>
there&#39;s a demand or inclination to expand its abilities, why not? &nbsp;As long<br>
as ioq3&#39;s stated goal of improving the q3 game engine without breaking<br>
background compatibility is met, good times!<br>
<br>
Older mods won&#39;t magically use the new extensions, so they could never<br>
magically stop working on baseq3. &nbsp;With RQ3, when we added new things like<br>
cvars and whatnot, we popped RQ3 in the names. &nbsp;As example, some related<br>
cvars:<br>
<br>
g_allowvote<br>
g_RQ3_vote_waittime<br>
g_RQ3_maxClientVotes<br>
<br>
If a coder or mod team can&#39;t figure out that using something like<br>
&quot;trap_S_ioq3_SoundDuration()&quot; is going to make their mod not work on<br>
baseq3 1.32 code, then they probably shouldn&#39;t be coding to begin with.<br>
<br>
Anyway, that&#39;s my thoughts on it. &nbsp;As long as ioq3 runs things that ran on<br>
baseq3 1.32, there&#39;s no reason not to extend it--as long as there&#39;s a<br>
rational, consistent method for the extensions. &nbsp;Something that makes<br>
sense to you guys doing all the work. &nbsp;;)<br>
<br>
Monk.<br>
<div class="Ih2E3d"><br>
&gt; On Tue, Apr 08, 2008 at 03:48:09PM +0200, Ludwig Nussel wrote:<br>
&gt;&gt; &gt; If I add a new syscall to tremulous, should I also add it to ioq3?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; For instance, I&#39;m currently in the process of adding a new syscall<br>
&gt;&gt; &gt; trap_S_SoundDuration(). &nbsp;Should this be added to ioq3 even though<br>
&gt;&gt; &gt; it isn&#39;t used by ioq3&#39;s cgame/ui?<br>
&gt;&gt;<br>
&gt;&gt; Well, if that&#39;s the syscall every mod developer always wanted and<br>
&gt;&gt; noone can live without anymore I guess it would be fine. I can&#39;t<br>
&gt;&gt; judge though.<br>
&gt;<br>
&gt; Yeah, that&#39;s the problem. &nbsp;All I know is that I need it for Tremulous.<br>
&gt; I guess zakk has to decide if it is worth shoving down everyone else&#39;s<br>
&gt; throats :)<br>
<br>
<br>
<br>
</div><div><div></div><div class="Wj3C7c">---<br>
To unsubscribe, send a blank email to <a href="mailto:quake3-unsubscribe@icculus.org">quake3-unsubscribe@icculus.org</a><br>
Mailing list archives: <a href="http://icculus.org/cgi-bin/ezmlm/ezmlm-cgi?50" target="_blank">http://icculus.org/cgi-bin/ezmlm/ezmlm-cgi?50</a><br>
<br>
<br>
</div></div></blockquote></div><br>