Pages: [1]
  Print  
Author Topic: [IMPORTANT] Read this before contributing to OA  (Read 16843 times)
Neon_Knight
In the year 3000
***

Cakes 50
Posts: 3493


Trickster God.


« on: March 08, 2011, 08:39:47 am »

Hi! And welcome to OpenArena!

We are glad that you want to help us. But first, there are some things which you must know.

* Frequently asked questions about development
* Good practices on development
* What isn't allowed or should be avoided.
« Last Edit: December 28, 2013, 08:27:46 am by Neon_Knight » Logged


"Simple is better than complex. Complex is better than complicated. Special cases aren't special enough to break the rules." Python's Zen
Want to contribute? Read this.
Neon_Knight
In the year 3000
***

Cakes 50
Posts: 3493


Trickster God.


« Reply #1 on: August 14, 2013, 03:12:20 pm »


As any project out there, OpenArena has a series of "do"s and "don't"s, things which fall inside of the project, and things which fall outside of it. This section lists the stuff that isn't allowed into OA. It's subjected to changes, but the list applies to every version of OA.

Stuff we possibly can not do, due to limitations of the engine

  • Adding per-pixel lighting.
  • Translation support. cgame.qvm and ui.qvm can be translated, though they won't be so compatible with most pure servers that run on English, and vice versa.
  • Skeletal models. Sure the engine has support for it, but our Blender tools don't, and also vanilla q3 doesn't either.
  • Ragdoll physics.
Stuff we won't include in the main package
(It should be noted that this stuff may be available in separated packages.)

  • Stuff which makes OA resemble Quake III Arena or any Quake game content-wise. The reason is that OA replicates (and tries to preserve as much as possible) the gameplay, yet the game itself would turn completely redundant if the same thematic of those games is copied as well.
    Also, there are tons of FPS out there with that thematic, so there's no reason/need to turn OA into one more game of that bunch. Although there are some weapons, maps and models resembling the Quake games, future versions of OA (such as OA3) will get rid of these knockoffs, at least in the main package.
  • Frontal nudity in the releases. This includes exposed erogenous zones like genitalia, anus, and female nipples. There's some suggestive stuff in the characters up to 0.8.X, (and OA3 will have even less suggestivity, because models will be more clothed) but going completely porn-nude is a no-no.
Stuff we won't do and never will

  • Change the core gameplay of the original game. This includes the physics, weapons, and anything that's the default gameplay. That's stuff for a mod, not for the original gameplay. The only exception to this rule are the TA weapons and the Grapple, because they were already in the Q3/TA code.
    • Related to the above, switch to any engine which isn't IdTech3. OpenArena was created in the IdTech3 for a reason. As an example, IdTech 4 is a completely different animal for a completely different game; it's not evolutionary, and it certainly has no real benefits. Also, one of the project's objective is to have low requirements, and moving to a "newer" engine will kill both this and the next point.
    • Also, adding or changing stuff which will further break mod compatibility, as mod compatibility IS a main objective of OA. It's also related with switching to another engine.
  • Designing/developing OA as an elite-only game where only seasoned players can enjoy the game. Even the original Quake III Arena was enjoyable without the need of knowing advanced techniques. And, in the long run, this will kill OA because of the high entry barrier. If anything, we want to cater to all audiences as we can inside of the limits of the project, not just the seasoned players. This includes:
    • Adding tweaks for personal advantage, as in, no brightskins, no cg_enemymodels. Again, that's stuff for a mod, since vanilla Q3 didn't included that kind of stuff.
  • Adding political propaganda. This includes stealth "Take That!"s to real life people, in the form of characters or character quotes.
  • GPLv2-clashing licensed files such as Creative Commons (including CC-BY and CC-BY-SA) and GPLv3. Aside of the license compatibility reasons, there's the matter of maintenance. If we can't maintain a bad CC/GPLv3 asset because there's no source provided with it, then it's as good as being removed. There's also the requirement of having a text file per asset to describe the license in case there is a license mix. It would also lead to multiple PK3 files, separated by the licensed involved, which would complicate building and make maintenance messy. This ESPECIALLY includes:
    • Adding content from commercial copyrighted games. It's copyright and EULA violation, which is followed by lawsuits and C&D letters. And you shouldn't do that as well. No matter the reason, don't insist.
  • Sponsor/get sponsored.
  • Set autodownload activated by default. It's a no-no for:
    • Security: Some custom PK3 have been known to use custom QVMs to exploit bugs or change stuff from the game itself.
    • Freedom: The users should be the ones to decide if they want to download extra stuff from OA servers.
    • GPL compliance: There're PK3 maps with content taken from other non-Free/copyrighted games. It's up to the server admin to enable autodownload at it's own risk.
  • PNG format. Sure, it's "open" and "natively supported by operating systems", but compared to Targas compressed in a zip, it doesn't really bring in the size benefits; in fact, it would make things worse, such as libpng dependencies varying across distros, compatibilty clashes, and much longer loading times.
  • Punkbuster support. It's propietary and closed source.
  • MP3 support. They're patented (patents are evil, aren't they) and have a lossyness that grates everyone's ears. We'll know quality loss when we hear it.
  • Removing AI support. Botplay is an important part of the game.
« Last Edit: December 28, 2013, 07:53:17 am by Neon_Knight » Logged


"Simple is better than complex. Complex is better than complicated. Special cases aren't special enough to break the rules." Python's Zen
Want to contribute? Read this.
Neon_Knight
In the year 3000
***

Cakes 50
Posts: 3493


Trickster God.


« Reply #2 on: December 28, 2013, 07:53:58 am »


This is the developer FAQ for everyone who wants to contribute to OpenArena. Regular users/players can get info from the default FAQ.

Anything I need to know before I contribute?

Although OpenArena is a Quake III Arena content replacement project, we aren't bound to a certain style. Concepts would be loose, so don't expect a remake of Klesk in his original Klesk form, or any direct remakes of any map/weapon/model.

License

In general, GNU General Public License v2 a.k.a. GPLv2 (NOT GPLv3) is the law here, but truly Public Domain (non copyrighted) stuff counts too. Licenses clashing with both of them aren't allowed. Please take take this in consideration before contributing.

Reasons for GPLv2 adoption include distribution and maintenance. GPLv2 allows a wider distribution, and allows others to copy, change and redistribute your contributed work, like it is done in GNU/Linux. None of us in OA are making money from it, but the GPL allows OA to be mirrored without any legal risk or included as instalable in many commercial Linux distros, for example.

Other licenses like CC respect some of these points, but have restrictions for distribution, such as CC-NC and CC-BY, or creation, such as CC-ND and CC-SA.

If you release something under the GPLv2 license, you must release also the "source" which you've used to make that asset. What the sources are, are listed below. Also, ALWAYS include the license file. And YOU must be the one who submit what you've done, no one else, unless there's a wrote authorization for it.

How can I contribute?

The following list tells you the ways in which you can contribute with the game:

  • First, it's suggested for development to grab the latest SVN build of OA. For this, do a checkout on http://openarena.ws/svn and http://www.mancubus.net/svn/openarena. You can't play online with the SVN build, but it contains all the stuff which will be included in future versions of OA.
  • If you know about image editing, you can help by creating some of the missing textures/GFX replacements, or by helping the mappers with the needed textures/GFX.
  • If you know about modelling, mapobjects and character assitance is appreciated. If you want to rework some of the already done work, (for example, player & item/weapon models) fine. The sources, in this area, are the .blend files from Blender. You can use other programs, as long as their license doesn't clash with GPLv2. (As in, imposing restrictions over derivatives or distribution) At any doubt, just check the forums.
  • If you know about sound creating/editing, then your help on, for example, weapon/item/ambiental sounds and voices is more than welcome. Here's a list of missing sounds, so far. Here's a sort of guide about missionpack audio lines.
  • If you're a coder, then you can help the people working on OpenArena eXpanded (the game-logic portion of OA, topic), or with the binaries.
  • If you're a mapper, then your help is appreciated. There're some maps on OA's SVN waiting to be retexturized or reworked. If you want to do work on existing maps, that's nice too.
  • Or, even if you have or not any of the previously mentioned skills, you can throw your own suggestions/help on how to improve the existing stuff of OA, on the development forums. Just remember to read NOTTODO for stuff which won't be part of the game.
Once you feel something you've created for the game it's done, you can post it in this thread on the Development forum, and fromhell will integrate it into OpenArena, if it meets the criteria needed. Just remember again: license file and the sources along with the finished work.

Another way to help the community is to contribute expanding this wiki site: take a look to the WikiWorks page, where you will find a list of pages that should be created and of pages that should be updated.

How can I contribute?

If you have some more detailed questions regarding specific areas of contribution, here's a list of experienced members you can contact on the boards:


Textures/Graphics

See also: Graphics resources & tutorials

The art direction of Open Arena is about "double" as Quake III Arena:

  • Double texture resolution, i.e. 512x512 as opposed to a 256x256.
  • The triangle limit is between 1500 and 2250, with an average of 1600/2000 triangles max. 1400 triangles maximum total for highest LoD.
  • Sound is mixed in 44khz rather than 22khz. Music is also 44khz.

The detail should still be scalable with texture resolution and LoD's for slower computers.

Modelling

See also: Models, Modeling, Making a player model

How do I export md3s in Blender?

See also: MD3 format
You can use the script found here for 2.49. A few notes:

  • All scripts must be copied to the scripts folder.
  • To export an animated md3 you MUST load the md3 export script in the text editor then run it. Also you must select the last frame of animation your model has too.
  • Tags are made from empties.
  • Work with your objects in 0,0,0 origin as much as possible. Moving them will cause the tags to be misaligned in export.

Mapping

See also: Mapping resources & tutorials

How do I setup GtkRadiant for OpenArena?

Here are articles to setup GTKRadiant on Windows & Linux, and MacRadiant on Mac.

Coding

See also: Coding resources & tutorials

Engine differences compared to ioquake3

The engine is close to ioquake3 but the following changes have been done:

  • Bloom support
  • Changed defines in q_shared.h (PRODUCT_NAME etc.)
  • Removed pak0 check from files.c
  • Changed defines in qcommon.h (PROTOCOL, AUTH server, UPDATE server and MASTER server)
  • Added extra protocols to common.c
  • Increased DEF_COMHUNKMEGS (56 is not enough for bloom)
  • Patched snd_codec.c so the engine will look for ogg files if no wav is found
  • Added g_humanplayers + g_needpass in client* and removed g_punkbuster from the same places
  • Changed default sound from sound/feedback/hit.wav to sound/misc/silence.wav (so missing sounds are not to annoying)
  • Changed the save path in sys/*. Replace "Quake3" with "OpenArena" and ".q3a" with ".openarena"

How do I compile the sourcecode?

Where to get the source

Linux/Mac

To extract the files enter 'tar -xvf <filename>.tar.bz2'That will extract all the files to two directories named 'oa-0.8.8' (game logic) and 'openarena-engine-source-0.8.8' (engine).
On Debian, check for following dependencies :

  • build-essential
  • libsdl2-dev
  • libopenal-dev
  • libvorbis-dev
  • libcurl-dev (there are different versions, they should all work)

The compiling under Linux is as easy as typing 'make'. Change to the specific directory and enter the command 'make'. Provided you have all the required libraries the binary openarena.i386 (or openarena.x86_64) will be created in a subdirectory. You may have to change the mode of the executable by entering the command 'chmod +x openarena.i386'

Windows

Code:
export WINDRES=i586-mingw32msvc-windres
to
Code:
export WINDRES=windres.exe

[LIST=1]
  • Download the source you want.
  • Download and install MinGW and MSys with the installer found at http://sourceforge.net/projects/mingw/files/latest/download - In the installer, check:
    • Under MinGW Compiler Suite: check C Compiler and C++ Compiler
    • MSYS Basic System
    • MinGW Developer Toolkit
  • Start the MSys Terminal ( Start/Programs/MinGW/MSYS/MSYS ) or in Startup Menu: MinGW > MinGW Shell
  • Change to the directory where the source code is located (you can copy it to your MSYS user folder located at x:\MinGW\msys\1.0\home\username\
  • Edit the file cross-make-mingw.sh:
  • Run 'make clean'
  • Run 'sh cross-make-mingw.sh'
  • a new directory named "build" should appear
  • If everything goes well, the build folder will contain either the qvm files that can be placed in vm/*.qvm inside a pk3 file or the binaries depending on source package used.

Troubleshooting

If you have problems compiling the game look here. If there were errors, look the errors in the terminal and try to google them. If nothing helps visit the forums.

Music

Please keep in mind that we want to create content under the GPLv2. This means you have to provide a source of your work. The only format OpenArena currently accepts for music therefor is a tracker-format. For more information please use the forum.
« Last Edit: December 28, 2013, 10:16:17 am by Neon_Knight » Logged


"Simple is better than complex. Complex is better than complicated. Special cases aren't special enough to break the rules." Python's Zen
Want to contribute? Read this.
Neon_Knight
In the year 3000
***

Cakes 50
Posts: 3493


Trickster God.


« Reply #3 on: December 28, 2013, 07:55:25 am »


Here are some advices of good practices to apply for your OpenArena contributions.

Things which should be avoided or are forbidden are already mentioned in NOTTODO.

Licensing

The OpenArena Team has chosen GPLv2 for mainstream distributions. As an author, you are free to choose your license for distribution (even dual-license), however GPLv2-compatible licenses are preferred for obvious reasons:

  • The OpenArena engine is based on the IdTech3 engine, which is GPLv2+.
  • Immediate compatibility for artwork should be GPLv2 too. This allows:
    • The inclusion in Debian GNU/Linux without any restriction, as it respects the DFSG from the start, hence a wider distribution and adoption, even in derivative (Ubuntu, knoppix, live-CD for games...)
    • Maintenance. By having the source at hand, it's possible to fix what's wrong with the assets or the code without the need to wait for the original author to do so.
    • Avoids us the need to separate packages by license, which makes maintenance difficult.
  • GPLv2 mostly require to provide the "preferred form for modification", hence providing high resolution assets is a plus and enables us to create better derived artwork.
    • For graphics models, use Blender and *always* provide .blend sources confirming your license choice. See Making a player model and the Developer F.A.Q..
    • For music, OGG is used in the end, but the preferable method of working is to choose MOD (tracker format) as to have an identified "source", see Music.
  • Before asking to include your creation into the SVN, provide credentials: i.e., state that you are the author or forward mails providing authorization to distribute under GPLv2+.
    Also, understand what this means: GPL has few restrictions on distribution, be it non-commercial or commercial, no country or project restriction: once it's in the "wild" you won't be able to retrieve it easily, make your choice from the start, do not be unhappy afterwards as you'll have been warned.

Artistic approach

  • OpenArena is somewhat anime/manga-INFLUENCED but not necessarily styled as so. This is more for the sake of distinguishing between characters and items rather than 'japan japan lol'. A bit gothic or even manga' oriented may be accepted, but remember that we don't want to exactly replicate the whole "serious/dark/grim/brown" trend seen in almost the entirety of FPS. Anyway, just suggest good design and see how it is welcome.
  • Check Roadmap for priorities and orientations (feel free to discuss)
  • The engine only supports vertex animation in the MD3 format, so you're free to run wild with vertex weights and program dependent softbody physics and the like, as long as it can 'bake' into the md3 file.
Logged


"Simple is better than complex. Complex is better than complicated. Special cases aren't special enough to break the rules." Python's Zen
Want to contribute? Read this.
Pages: [1]
  Print  
 
Jump to: