FF on Source SDK 2013
Find a file
Dexter 05347bc4fc fix a very strange luabind crash on init caused by static initialization of a std::map template dynamic initializer blowing up. can't make this stuff up!
luabind.vpc and lua.vpc were missing "$BASE" macros for libs, seems to be cause (likely the iterator link error i slammed off before)

also working on 2013 just to spite jon
2014-10-13 00:14:55 -07:00
mp/src fix a very strange luabind crash on init caused by static initialization of a std::map template dynamic initializer blowing up. can't make this stuff up! 2014-10-13 00:14:55 -07:00
.gitattributes Update text & binary attributes. 2013-07-05 12:08:13 -07:00
.gitignore Removed game/FortressForever and added the dir to .gitignore 2013-10-21 22:18:00 -07:00
CONTRIBUTING Merged SDK changes from the Valve Github repo up until commit: "Copy SSE fix to MP branch." (73f5dea98e8a036c27c4026cff260ce48d93e492) 2014-10-13 00:10:07 -07:00
DOCUMENTATION.md * Added initial DOCUMENTATION.md 2013-09-03 23:03:31 -07:00
LICENSE Merged SDK changes from the Valve Github repo up until commit: "Copy SSE fix to MP branch." (73f5dea98e8a036c27c4026cff260ce48d93e492) 2014-10-13 00:10:07 -07:00
README.md Removed the Git section as we're using SVN now, added a bit about class naming 2014-10-13 00:04:36 -07:00
thirdpartylegalnotices.txt Merged SDK changes from the Valve Github repo up until commit: "Copy SSE fix to MP branch." (73f5dea98e8a036c27c4026cff260ce48d93e492) 2014-10-13 00:10:07 -07:00
vpc-notes.md updated VPC structure 2013-09-14 23:40:57 -06:00

Fortress Forever (Source SDK 2013)

Committing

  • Always make sure the code you are committing compiles
  • Try to commit changes separately, rather than 20 files at once. This means we can easily revert certain pieces if we don't like them, rather than going through manually to remove stuff
  • Be descriptive in your revision comments.
  • If you aren't sure you're doing something the best way, comment it in code and possibly comment ("First pass, needs cleaning up!" for e.g.)

Code

  • Avoid making changes in the base Source engine files; always try to move those changes into a FF-specific source file that derives from the base class.

Syntax

Variable and Function Names

  • TODO Decide on a naming convention
  • Always make variable and function names as descriptive as possible (if 'i' stands for 'currentPlayerIndex' then use 'currentPlayerIndex')

Class Names

  • New classes should always start with CFF_, followed by either SV_ for a server-side class, CL_ for a client-side class, or SH_ for a shared class, and then the ClassName
    • Example: CFF_CL_Player, CFF_SV_Player, and CFF_SH_Player
    • Note: Shared classes usually will have #define aliasing such that a class with the SH_ prefix won't actually exist, but instead will always be mapped to the respective CL_ or SV_ class

File Names and Directory Structure

  • Always put FF code files in the src/game/[server/client/shared]/ff/ directory.
    • TODO Decide on a subdirectory scheme
  • Always prefix Fortress Forever code files with ff_
  • Add a secondary prefix depending on the usage of the file; for client-only files, use cl_; for server-only files, use sv_; for shared files, use sh_
    • Example: the "player" source files would be named: ff_cl_player, ff_sv_player, and ff_sh_player

Adding/Removing Files

Solution and makefiles are no longer stored on the repo, they are generated using VPC. To add/remove files from the project, you must edit the game/client/client_ff.vpc and/or game/server/server_ff.vpc files and then execute createallprojects(.bat) in the src/ directory. To remove a non-FF-specific file from the project (like HL2DM files), add exactly what you would to add the file (or copy the line from the .vpc that includes it), but put a - before "$File".

Documentation

DOCUMENTATION.md

For documentation of general Source engine things or of implemented features, commit to the develop branch. For each feature branch, document the in-development feature as it is worked on; the documentation will get merged along with the feature once it is complete.

Doxygen Inline Commenting

Note: only use Doxygen commenting as necessary (see section Variable, Function, File Names and Directory Structure)

To describe classes/functions/files (List of available @ commands):

/// Brief description. (optional)
/** Detailed description. 

    @param parameterName Description of the param
    @returns Description of the return value
*/

To describe member variables:

int var; ///< Detailed description of the member variable
         ///< and more if needed