| 1 | Cube source code license, usage, and documentation. |
|---|
| 2 | |
|---|
| 3 | You should read this file IN ITS ENTIRETY if you wish to do anything with |
|---|
| 4 | the cube source code, even a mere build. Own builds are not necessarily |
|---|
| 5 | compatible with the officially released binaries, read below. |
|---|
| 6 | |
|---|
| 7 | You may use the cube source code if you abide by the ZLIB license |
|---|
| 8 | http://www.opensource.org/licenses/zlib-license.php |
|---|
| 9 | (very similar to the BSD license) with the additional clause below: |
|---|
| 10 | |
|---|
| 11 | |
|---|
| 12 | LICENSE |
|---|
| 13 | ======= |
|---|
| 14 | |
|---|
| 15 | Cube game engine source code, 20 dec 2003 release. |
|---|
| 16 | |
|---|
| 17 | Copyright (C) 2001-2003 Wouter van Oortmerssen. |
|---|
| 18 | |
|---|
| 19 | This software is provided 'as-is', without any express or implied |
|---|
| 20 | warranty. In no event will the authors be held liable for any damages |
|---|
| 21 | arising from the use of this software. |
|---|
| 22 | |
|---|
| 23 | Permission is granted to anyone to use this software for any purpose, |
|---|
| 24 | including commercial applications, and to alter it and redistribute it |
|---|
| 25 | freely, subject to the following restrictions: |
|---|
| 26 | |
|---|
| 27 | 1. The origin of this software must not be misrepresented; you must not |
|---|
| 28 | claim that you wrote the original software. If you use this software |
|---|
| 29 | in a product, an acknowledgment in the product documentation would be |
|---|
| 30 | appreciated but is not required. |
|---|
| 31 | 2. Altered source versions must be plainly marked as such, and must not be |
|---|
| 32 | misrepresented as being the original software. |
|---|
| 33 | 3. This notice may not be removed or altered from any source distribution. |
|---|
| 34 | |
|---|
| 35 | additional clause specific to Cube: |
|---|
| 36 | |
|---|
| 37 | 4. Source versions may not be "relicensed" under a different license |
|---|
| 38 | without my explicitly written permission. |
|---|
| 39 | |
|---|
| 40 | |
|---|
| 41 | LICENSE NOTES |
|---|
| 42 | ============= |
|---|
| 43 | The license covers the source code found in the "src" directory of this |
|---|
| 44 | archive, the included enet network library which cube uses is covered by |
|---|
| 45 | the "No problem Bugroff" license, which is however compatible with the |
|---|
| 46 | above license for all practical purposes. |
|---|
| 47 | |
|---|
| 48 | Game media included in the cube game (maps, textures, sounds, models etc.) |
|---|
| 49 | are not covered by this license, and may have individual copyrights and |
|---|
| 50 | distribution restrictions (see individual readmes). |
|---|
| 51 | |
|---|
| 52 | |
|---|
| 53 | USAGE |
|---|
| 54 | ===== |
|---|
| 55 | Compiling the sources should be straight forward. |
|---|
| 56 | |
|---|
| 57 | Unix users need to make sure to have the development version of all libs |
|---|
| 58 | installed (OpenGL, SDL, SDL_Mixer, SDL_Image, zlib, libpng). The included |
|---|
| 59 | makefiles can be used to build. |
|---|
| 60 | |
|---|
| 61 | Windows users can use the included visual studio .net 2003 project files, which |
|---|
| 62 | references the lib/include directories for the external libraries and should |
|---|
| 63 | thus be self contained. The project is set up assuming you have the normal |
|---|
| 64 | cube binary distribution as a subdirectory "cube" of the root of this archive, |
|---|
| 65 | so release mode builds will place executables in the bin dir ready for testing |
|---|
| 66 | and distribution. Do not come ask me for help in compiling or modifying the |
|---|
| 67 | sources, if you can't figure out how to do this yourself you probably shouldn't |
|---|
| 68 | be touching the files anyway. |
|---|
| 69 | |
|---|
| 70 | The cube sources are very small, compact, and non redundant, so anyone |
|---|
| 71 | wishing to modify the source code should be able to gain an overview of |
|---|
| 72 | cube's inner workings by simply reading through the source code in its |
|---|
| 73 | entirety. Small amounts of comments should guide you through the more |
|---|
| 74 | tricky sections. |
|---|
| 75 | |
|---|
| 76 | When reading the source code and trying to understand cube's internal design, |
|---|
| 77 | keep in mind the goal of cube: minimalism. I wanted to create a very complete |
|---|
| 78 | game / game engine with absolutely minimal means, and made a sport out of it |
|---|
| 79 | keeping the implementation small and simple. Cube is not a commercial product, |
|---|
| 80 | it is merely the author's idea of a fun little programming project. |
|---|
| 81 | |
|---|
| 82 | |
|---|
| 83 | OPEN SOURCE |
|---|
| 84 | =========== |
|---|
| 85 | Cube is open source (see ZLIB license above). This only means that you have |
|---|
| 86 | great freedom using it for your own projects, but does NOT mean the main cube |
|---|
| 87 | code is an "open source project" in the sense that everyone is invited to |
|---|
| 88 | contribute to it. The main cube code will remain a one man project (me), as my |
|---|
| 89 | minimalistic design is highly incompatible with the open source philosophy. If you |
|---|
| 90 | add to the cube source code, you fork the code and it becomes your own project, |
|---|
| 91 | do not ask for me to integrate your changes into the main branch, no matter |
|---|
| 92 | how brilliant they are. |
|---|
| 93 | |
|---|
| 94 | |
|---|
| 95 | CHEATING |
|---|
| 96 | ======== |
|---|
| 97 | If you want to use cube as a base for a game where the multiplayer aspect is |
|---|
| 98 | important and used by a large community, you need to be aware that cube's |
|---|
| 99 | thick client - thin server architecture is extremely cheat sensitive. If you |
|---|
| 100 | release a cube based game with source code equivalent to the binaries, some |
|---|
| 101 | minor changes can give anyone an aimbot or other cheats in online games. |
|---|
| 102 | There are several ways to make this less easy, some of which are: |
|---|
| 103 | |
|---|
| 104 | 1. only distribute binaries (the ZLIB license allows this). Executables can still |
|---|
| 105 | be hacked, but unless you have a really large online community, noone will |
|---|
| 106 | probably bother. |
|---|
| 107 | 2. write a network proxy, such as qizmo used with QuakeWorld (whose sources are |
|---|
| 108 | also open source). The proxy is a small closed source program that checksums |
|---|
| 109 | the executable, and maybe also some game media. You can then make servers |
|---|
| 110 | or game admins request this information and ban cheaters. |
|---|
| 111 | 3. release the sources with an incompatible network protocol or other changes |
|---|
| 112 | compared to the binaries you release. |
|---|
| 113 | 4. build serious cheat detection into the game. Since all clients are their own |
|---|
| 114 | "servers", you can make them all keep track of stats for the other players, |
|---|
| 115 | such as health etc. you can make all sorts of consistency checks on shots, |
|---|
| 116 | movement speed and items. If the discrepancy for a certain client becomes |
|---|
| 117 | too big, all clients but the cheater can send their "vote" to the server |
|---|
| 118 | for having him banned. Even better, you can add server side stat checking. |
|---|
| 119 | |
|---|
| 120 | For the cube's own game I chose option 3, i.e. you can only play the official |
|---|
| 121 | cube game using the binaries supplied by me, and you can't compile your own clients |
|---|
| 122 | for multiplayer use (you can still make custom clients that work with matching |
|---|
| 123 | custom servers, or play cube single player maps compatible with the real thing). |
|---|
| 124 | This situation is not ideal, but there is no easy way around it. |
|---|
| 125 | |
|---|
| 126 | This scheme is probably very easy to defeat if you are capable of using disassemblers |
|---|
| 127 | and packet sniffers, but please contrain yourself and don't ruin the fun of the |
|---|
| 128 | cube multiplayer community. Thanks. |
|---|
| 129 | |
|---|
| 130 | |
|---|
| 131 | AUTHOR |
|---|
| 132 | ====== |
|---|
| 133 | Wouter van Oortmerssen aka Aardappel |
|---|
| 134 | wvo@fov120.com |
|---|
| 135 | http://wouter.fov120.com |
|---|
| 136 | |
|---|
| 137 | For additional authors/contributors, see the cube binary distribution readme.html |
|---|