Git Product home page Git Product logo

ges-code's Introduction

GoldenEye: Source

About

A total conversion modification of Half-Life 2. We are a fan made artistic recreation, released for free, with a primary goal in mind; To bring the memories and experiences from the original GoldenEye-64 back to life using the Source SDK 2013 Technology. As one of the premier and consistently released HL2 mods, GES has been seen out and about, reviewed by the best, and played by hundreds and thousands of PC gamers for Eight long years and running.

Visit our website and forums!

Current State

The last major public release of GES was v5.0 on August 12, 2016 using the 2007 Source SDK.

Navigating the Code

The main code base for GES is located in the following directories:

  • /game/client/ges
  • /game/server/ges
  • /game/shared/ges

TODO: Write more specific code navigation readme

How to build

Prerequisites

You must have the Boost libraries (v1.49 or higher) installed on your system path such that CMAKE can find them. You can download Boost here or through your distro's package manager.

You must also have CMAKE v2.8.12 or higher installed on your system, available here or through your distro's package manager.

Linux Build Process

  1. Checkout the repository using git
  2. Open a terminal window in the root of the repository you just checked out
  3. Initialize the submodules: git submodule init --recursive
  4. Build with CMake: mkdir build && cd build
  5. cmake -DCMAKE_INSTALL_PREFIX=[path_to_gesource] ..
  6. make install

Windows Build Process

  1. Checkout the repository using git and initialize the submodules (recommend TortoiseGit)
  2. Create a build directory in the repository's root
  3. Open CMAKE GUI and configure the project for the visual studio version you are using (prefer 2015)
  4. Open Visual Studio using the generated solution files
  5. Build and install as usual

Third-Party Libraries

GES relies on several third-party libraries during compilation. We have an integrated Python 3.4 interpreter to run our Gameplay Scenarios and AI. To drive all this, we use the Boost Python library. To play our music, we utilize FMOD since Valve's internal sound functions do not operate across level transitions.

Contributing

We will accept pull requests and bug reports from anyone. All we ask at this state is to limit your requests to bug fixes and compilation fixes. New capability and major code revisions will not be accepted until further notice.

Code License

GoldenEye: Source original code (files starting with 'ge_') is licensed under the GNU GPL v3. The full license text can be found in LICENSE_GES.

It's important to know that this code is supplied WITH ABSOLUTELY NO WARRANTY WHATSOEVER. We are not responsible for any damages resulting from the use of this code. Please see the license for more information.

TODO: Replace file headers to comply with GNU GPL v3

ges-code's People

Contributors

alanedwardes avatar alfred-valve avatar bruced-valve avatar droidmonkey avatar electricprism avatar entropy-soldier avatar joeludwig avatar jorgenpt avatar jstasiak avatar narendraumate avatar neico avatar plesiecki avatar psychonic avatar sortie 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ges-code's Issues

Potential Keyvalues Memory Leak

Hi.

In c_baseanimating.cpp, there's a function called DelayedInitModelEffects() that's defined at line 1263. This is base class code and I'm not sure what your handling is for that kind of code, though it looks like you use #ifdef GE_DLL. This is nothing huge, but there's a potential KeyValues leak in that function if it ends up returning early in a couple places such as around line 1300.

It's not a particularly big function so it should be easy to figure out. Should do modelKeyValues->deleteThis(); when it returns early.

Found this one day, so figured I'd pass it on. I'm actually interested in helping more, but I haven't played the game before to know what might be broken. Will someday though. Really love the use of CMake. I hate VPC.

Missing Python Thirdparty.

The python thirdparty fail when execute git clone --recursive-submodules because the link is broken or the file was removed.

Can't make on GNU/Linux

Hy, firts sorry for my english.
I tray to compile the game in GNU/Linux but make show this error:

make[2]: Leaving directory '/media/1tb/Juegos/ges-code/game/client'
---- LINKING obj_server_ges_linux32/release/server.so [release] ----
../../lib/ges/linux32/python26.a(posixmodule.o): In function `posix_tmpnam':
/home/jon/Downloads/Python-2.6.8/./Modules/posixmodule.c:7261: warning: the use of `tmpnam_r' is dangerous, better use `mkstemp'
../../lib/ges/linux32/python26.a(posixmodule.o): In function `posix_tempnam':
/home/jon/Downloads/Python-2.6.8/./Modules/posixmodule.c:7216: warning: the use of `tempnam' is dangerous, better use `mkstemp'
../../lib/ges/linux32/boost_python.a(builtin_converters.o): In function `encode_string_unaryfunc':
/media/1tb/Juegos/ges-code/thirdparty/boost/libs/python/src/converter/builtin_converters.cpp:409: undefined reference to `PyUnicodeUCS4_FromEncodedObject'
../../lib/ges/linux32/boost_python.a(builtin_converters.o): In function `construct':
/media/1tb/Juegos/ges-code/thirdparty/boost/libs/python/src/converter/builtin_converters.cpp:442: undefined reference to `PyUnicodeUCS4_AsWideChar'
../../lib/ges/linux32/python26.a(posixmodule.o): In function `posix_forkpty':
posixmodule.c:(.text+0x2893): undefined reference to `forkpty'
../../lib/ges/linux32/python26.a(posixmodule.o): In function `posix_openpty':
posixmodule.c:(.text+0x420c): undefined reference to `openpty'
collect2: error: ld returned 1 exit status
../../devtools/makefile_base_posix.mak:485: recipe for target 'obj_server_ges_linux32/release/server.so' failed
make[2]: *** [obj_server_ges_linux32/release/server.so] Error 1
make[2]: Leaving directory '/media/1tb/Juegos/ges-code/game/server'
everything.mak:47: recipe for target 'server_ges' failed
make[1]: *** [server_ges] Error 2
make[1]: Leaving directory '/media/1tb/Juegos/ges-code'
everything.mak:23: recipe for target 'all' failed
make: *** [all] Error 2

My sistem is:
S.O.: Archlinux x86_64
GCC: 4.9.1
make: 4.0

[Enhancement] Continuous integration testing with Travis CI / Docker

I worked out how to run builds against 32-bit docker images run via Travis CI. This would be quite nice for CI testing among a few major distros. You can check out the starting files and CI builds below. Using the Travis CI build matrix, each distro job runs in parallel. Based on the distro env value, the linux build script adjusts accordingly (docker image, build script, deps, adjustments etc.).

Update 1: Added Fedora 32bit image to my docker hub and added it to the travis matrix.

Build status:

Debian Jessie: passes
Ubuntu Xenial: failing (grrrr)
Fedora 24: passes

Update: per the docker image for ubuntu I am using, the container is not 32 bit, which explains that. I will work on generating one to test with, or find an alternate.

Update2: found a an alternate docker image for i386 ubuntu

Help Building on Arch

Here's what I do:

mkdir ~/Builds
cd ~/Builds

git clone https://github.com/goldeneye-source/ges-code.git

cd ges-code

mkdir build && cd build

cmake -DCMAKE_INSTALL_PREFIX=/usr ..

Here's the output:

➜  build git:(develop) cmake -DCMAKE_INSTALL_PREFIX=/usr ..
-- Boost version: 1.61.0
CMake Error at /usr/share/cmake-3.6/Modules/ExternalProject.cmake:1924 (message):
  No download info given for 'python' and its source directory:

   /home/electricprism/Builds/ges-code/thirdparty/python

  is not an existing non-empty directory.  Please specify one of:

   * SOURCE_DIR with an existing non-empty directory
   * URL
   * GIT_REPOSITORY
   * HG_REPOSITORY
   * CVS_REPOSITORY and CVS_MODULE
   * SVN_REVISION
   * DOWNLOAD_COMMAND
Call Stack (most recent call first):
  /usr/share/cmake-3.6/Modules/ExternalProject.cmake:2473 (_ep_add_download_command)
  CMakeLists.txt:49 (ExternalProject_Add)


-- Configuring incomplete, errors occurred!
See also "/home/electricprism/Builds/ges-code/build/CMakeFiles/CMakeOutput.log".

What does this mean and how do I fix it?

Did anyone get it to work somehow?

I'm just curious if someone got it to a point that it's playable. Hopefully it's not abandoned completely...
I'm currently running Manjaro 18 and was able to build the client, with some tweaks to the cmakelist.txt etc... (the Server reach 99%).

However the Game don't start because it can't load "start_loading.vtf" in the folder material/console. Something related to the gameinfo.txt that i can't figure out.

So does anyone here that got the client and server build and was able to run the game with the sdk2013 on an recent Linux Distribution?

In addition: the game with SDK2007 runs fine with Proton enabled (4.2-9).

Building GE:S on Debian / SteamOS

#23 was for Arch Linux, so I broke this out from the conversation. If this was not the right move, I can close this thread to avoid more noise. I can't determine if this is a linking order issue, or dependency issue at the moment. ../thirdparty/boost-python/libboost_python.a libsteam_api.so libtier0.so libvstdlib.so -Wl,-rpath,/build/ges-5.0+20161024git+bsos/build/python/lib:/build/ges-5.0+20161024git+bsos/build/game is included after the linking?.

Debian progress tracker:
Reproducible steps for Debian 8 32-bit chroot :

Updated 20161024 @ 15:10 UTC -0500

sudo apt-get update
sudo apt-get install cmake libboost-all-dev libc6-dev libldap2-dev
git clone --recursive https://github.com/goldeneye-source/ges-code
cd ges-code
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..

Current problems

  • None! I just don't know how to install the libraries :P
  • The build notes specify -DCMAKE_INSTALL_PREFIX=[path_to_gesource], and I'm unsure what gesource refers to explicitly, unless that is the folder to the client/sever zip files?

CaptureArea zones collide with rockets

A CaptureArea, e.g. the ones used in Uplink, collide with rockets. The rockets explode within and around the areas (e.g. firing a rocket launcher within an area instantly kills you). Other projectiles, such as grenades, grenade launcher rounds and mines do not have this problem.

Round report displays previous match's gamemode

Whenever the gamemode changes, the round result scoreboard of the first round (OHMSS After Action Report) displays the previous gamemode that is no longer being played. This occurs when the gamemode changes when the map time limit is reached and also when the gamemode is changed by voting in the middle of a round.

For example, yesterday I was playing on the 1138 clan server. The gamemode was first "One Bullet Is Enough". After map change we played Arsenal. After the first round of Arsenal, the ending score board claimed that the round gamemode was "One Bullet Is Enough", which it wasn't anymore (see attached screenshot).

The round results of the second and all the remaining rounds always displays the correct gamemode, the bug is only happening in the first round.

http://forums.geshl2.com/index.php/topic,7885.msg81216.html#msg81216

ges score board bug 2014-07-21_00001
ges score board bug 2014-07-22_00001

Out of date?

Is the repo out of date? If so where can the current version be found?

Building on Linux [skipping incompatible ../../lib/ges/linux32/libpython3.so ]

This is probably a bad place to ask this, but seeing as people are successfully doing it.

As the above title is sort of saying, how do you build on Linux?

I've been using Ubuntu 15.10, and i've been trying day in-day out to compile any SSDK13 mod (Including one of my own) to compile for Linux, I've tried following tutorials on the Valve Developer sites, and I could never seem to get it to work...

I end up getting a bunch of errors of files/directory's not being found

(EX. fatal error: sys/cdefs.h: No such file or directory In file included from /usr/include/math.h:26:0, and shortly after **make: * [all] Error 2)

Does anybody have any possible tutorials, that could better explain?

Add nominal floor height to a GES point entity

There needs to be a consolidated point entity for GES for maps. In this entity it should at least contain a value for the nominal floor height (which is assumed to be 192 units) for the radar to properly determine above/below.

Round Report incorrectly displays team version on occasion

Sometimes after a non-team round the ending score board will show everybody's team as "Unassigned" (which looks bad and unintentional, usually when teams aren't enabled this column is omitted, am I right?). I suspect that this is observed, when before map change teams are enabled but after map change it is no longer a team game. But the report will show team information when it is not relevant. Again, this would probably be observed in the first round after teams are disabled. But of this I am not sure.

http://forums.geshl2.com/index.php/topic,7885.msg81216.html#msg81216

Re-add intro video

Currently the intro video is disabled due to the new interface to the movie API in SDK 2013.

Grenade Launcher rounds do not bounce

This is especially prevalent when the incident angle is less than 20 degrees. Recommend going back to a simple collision model versus the physics based model.

Python build fails

./build_python3.sh fails with:

(cd /home/daurnimator/src/goldeneye-source/ges-code/thirdparty/python3/ges_build/bin/share/man/man1; ln -s python3.4.1 python3.1)
if test "xupgrade" != "xno"  ; then \
    case upgrade in \
        upgrade) ensurepip="--upgrade" ;; \
        install|*) ensurepip="" ;; \
    esac; \
    LD_LIBRARY_PATH=/home/daurnimator/src/goldeneye-source/ges-code/thirdparty/python3/ges_build ./python -E -m ensurepip \
        $ensurepip --root=/ ; \
fi
Traceback (most recent call last):
  File "/home/daurnimator/src/goldeneye-source/ges-code/thirdparty/python3/Lib/runpy.py", line 170, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/daurnimator/src/goldeneye-source/ges-code/thirdparty/python3/Lib/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/daurnimator/src/goldeneye-source/ges-code/thirdparty/python3/Lib/ensurepip/__main__.py", line 4, in <module>
    ensurepip._main()
  File "/home/daurnimator/src/goldeneye-source/ges-code/thirdparty/python3/Lib/ensurepip/__init__.py", line 209, in _main
    default_pip=args.default_pip,
  File "/home/daurnimator/src/goldeneye-source/ges-code/thirdparty/python3/Lib/ensurepip/__init__.py", line 116, in bootstrap
    _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/home/daurnimator/src/goldeneye-source/ges-code/thirdparty/python3/Lib/ensurepip/__init__.py", line 40, in _run_pip
    import pip
  File "/tmp/tmpe7exdkc9/pip-1.5.6-py2.py3-none-any.whl/pip/__init__.py", line 9, in <module>
  File "/tmp/tmpe7exdkc9/pip-1.5.6-py2.py3-none-any.whl/pip/log.py", line 9, in <module>
  File "/tmp/tmpe7exdkc9/pip-1.5.6-py2.py3-none-any.whl/pip/_vendor/colorama/__init__.py", line 2, in <module>
  File "/tmp/tmpe7exdkc9/pip-1.5.6-py2.py3-none-any.whl/pip/_vendor/colorama/initialise.py", line 5, in <module>
  File "/tmp/tmpe7exdkc9/pip-1.5.6-py2.py3-none-any.whl/pip/_vendor/colorama/ansitowin32.py", line 6, in <module>
  File "/tmp/tmpe7exdkc9/pip-1.5.6-py2.py3-none-any.whl/pip/_vendor/colorama/winterm.py", line 2, in <module>
  File "/tmp/tmpe7exdkc9/pip-1.5.6-py2.py3-none-any.whl/pip/_vendor/colorama/win32.py", line 7, in <module>
  File "/home/daurnimator/src/goldeneye-source/ges-code/thirdparty/python3/Lib/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ImportError: No module named '_ctypes'
Makefile:988: recipe for target 'install' failed
make: *** [install] Error 1
Deploying Python to build directories...
‘../Include/pyconfig.h’ -> ‘../ges_build/bin/include/python3.4m/pyconfig.h’
‘./bin/lib/libpython3.4m.so.1.0’ -> ‘../../../bin/mod_ges/’
cp: cannot create regular file ‘../../../bin/mod_ges/’: No such file or directory
chmod: cannot access ‘../../../bin/mod_ges/libpython*’: No such file or directory
‘../../../lib/ges/linux32/libpython3.so’ -> ‘../../../bin/mod_ges/libpython3.4m.so.1.0’

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.