Back to the [[:Start|Crossfire Main]] page ====== Development ====== This section provides guidelines and information intended for developers, map editors, or curious players who wish to modify the game. If you are interested in contributing to the game, this is the place to look. ===== Getting Help ===== The best place to discuss the development of Crossfire is the [[https://crossfire.real-time.com/irc/index.html|libera.chat irc]] or [[https://crossfire.real-time.com/discord/index.html|Discord]] channels named "crossfire". ===== Getting Started ===== To work on game content including maps, quests, graphics, and the server: - Use Git to clone the server, map, and archetype repositories - [[:server:server_compiling|Compile and install]] a local development server - [[gridarta|Install the map editor (Gridarta)]] - (optional) [[:cre:compiling|Install the Crossfire Resource Editor (CRE)]] to edit quests, objects, and monsters in a GUI For help with the above on Linux, see [[:dev:linux|Linux Development Guide]]. To work on the game clients: * [[:client:client_compiling|Crossfire GTK2 Client Compile Guide]] details how to install the GTK2 client from source. * [[:jxclient:compiling|Crossfire Java Client Compile Guide]] details how to build JXClient from sources. ===== Information for Development ===== The following sections provide information on guidance for developing Crossfire to maintain a consistent and engaging Crossfire experience. ==== Archetypes ==== Information about modifying and creating new objects such as items, monsters, spells using existing code: * [[:arch:Making Archetypes]] * [[:arch:Custom Item Creation]] - Information and guidelines about creating custom items. * [[:arch:Custom Creature Creation]] - Information and guidelines about creating custom creatures. * [[:arch:Graphics Guide]] - Information to aid the creation of archetypical art. * [[:arch:Item Type Guide]] - Information about how different types and attributes affect objects. * [[:arch:Spell Numbers]] - The "spellnumber" works like an ID, it is needed to specify spells in various object-types. E.g. spellbooks, rods/wands/scrolls, firewalls... etc. * [[:arch:spell_shuffle:Spell Shuffle]] - New testing and experimental archetype branch that contains spell tweaks and spell school reorganization ==== Maps ==== Guides for how to design maps in crossfire that are consistent in look and feel with existing maps: * [[:maps:Map Making Guide]] - This is a guide on what is an acceptable map and what is unacceptable. Also, how/where to contribute maps. * [[:maps:dev:Notes on Map Making]] - Notes, details and suggestions on making maps. * [[:maps:Yardstick]] - A note about the scale and size relations of maps compared to reality. * [[https://sourceforge.net/p/crossfire/crossfire-server/ci/master/tree/doc/Developers/objects|Simple dialogs]] (go to section J, "NPC's Speak out") * [[user:cavesomething:guide_to_quest_dialogs|Python/Quest Dialogs]] [[https://sourceforge.net/p/crossfire/crossfire-maps/ci/master/tree/python/CFDialog.py|more information]] * [[lander|Lander]] - World Map Generator ==== Code ==== Guides for modification and creation of new code: * [[:Coding Style Guide]] - Guidelines for coding style for the crossfire server and clients. * [[:dev:Server Design]] * [[:server plugin|Server Plugins]] * [[:cfpython:Insult Generator]] ==== Architecture ==== * [[:dev:objects]] * [[:dev:object_fields]] * [[:dev:misc]] * [[:dev:god intervention]] * [[:dev:shared_strings]] * [[:dev:random-maps]] * [[:dev:random-styles]] * [[:dev:runes]] * [[:dev:shops]] * [[:dev:skills]] * [[:dev:spells]] * [[:dev:weather]] * [[:howto:add_body_slot]] ===== TODO and Ideas ===== ==== TODO lists ==== The TODO list represent ideas that have general consensus and are currently being worked on or due to be worked on soon. These are an excellent starting points for new developers who wish to contribute to the project. * [[:dev_todo]] - The TODO List * [[:dev_todo_new|Unified TODO list]] - Table format of the TODO list ==== Ideas ==== These pages contain general discussion that hasn't made it on to the TODO list yet. * [[server:scratchpad|Server Scratchpad]]: changes to the way the server currently works (improvements to movement or networking code) * FIXME incorporate: [[content:scratchpad|Old Scratchpad]] * [[client:scratchpad|Client Scratchpad]]: Ideas on limitations or ideas in the way the client runs that have been discussed and are worth jotting down * [[:UI Proposals]] - Rough sketches and ideas for possible revision to the look and feel of the UI(s) * [[gameplay:scratchpad|Gameplay scratchpad]]: Ideas that focus on in game content that are worth jotting down as a possible future TODO * FIXME incorporate: [[ideas:cult_system_restructuring|Cult System Restructuring Ideas]] ===== Documentation ===== ==== Crossfire Wiki ==== Contributing to the Crossfire Wiki is simplest way to assist in the development of Crossfire. * [[:orphans and missing|Missing/Orphaned Pages]] - Try to keep these pages to a minimum * [[:wiki:Style Guide]] - Guidance on maintaining consistency on pages of the Crossfire Wiki ===== Misc ===== * [[:sourceforge:Attribution Policy]] - Policy of attribution for patches. * [[:sourceforge:Checkin Guidelines]] - SVN checkin procedure * [[:Crossfire Release Cycle]] * [[:Crossfire Release Guide]] - Steps need to make an official release of crossfire. * [[:sourceforge:SourceForge Migration]] notes, tips and help * Get together ([[:g2g]]) meeting notes, summary, proposal(s) * [[:crossfire:forks|Forks]] List of known forks of crossfire