mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-20 20:23:03 +02:00
Updated docs and all internal links
This commit is contained in:
parent
4204e895bc
commit
33bf367dc0
@ -430,8 +430,8 @@
|
||||
### MODDING:
|
||||
* All configurable objects from H3 now have their configuration in json
|
||||
* Improvements to functionality of configurable objects
|
||||
* Replaced `SECONDARY_SKILL_PREMY` bonus with separate bonuses for each skill. See https://wiki.vcmi.eu/List_of_all_bonus_types
|
||||
* Removed multiple bonuses that can be replaced with another bonus. See https://wiki.vcmi.eu/List_of_all_bonus_types
|
||||
* Replaced `SECONDARY_SKILL_PREMY` bonus with separate bonuses for each skill.
|
||||
* Removed multiple bonuses that can be replaced with another bonus.
|
||||
* It is now possible to define new hero movement sounds in terrains
|
||||
* Implemented translation support for mods
|
||||
* Implemented translation support for .h3m maps and .h3c campaigns
|
||||
@ -756,7 +756,7 @@
|
||||
* Wall hit/miss sound will be played when using catapult during siege
|
||||
|
||||
### SPELLS:
|
||||
* New configuration format: http://wiki.vcmi.eu/index.php?title=Spell_Format
|
||||
* New configuration format
|
||||
|
||||
### RANDOM MAP GENERATOR:
|
||||
* Towns from mods can be used
|
||||
@ -789,7 +789,6 @@
|
||||
* (linux) Added a SIGSEV violation handler to vcmiserver executable for logging stacktrace (for convenience)
|
||||
|
||||
### ADVENTURE AI:
|
||||
More info at http://wiki.vcmi.eu/index.php?title=Adventure_AI
|
||||
* AI will use fuzzy logic to compare and choose multiple possible subgoals.
|
||||
* AI will now use SectorMap to find a way to guarded / covered objects.
|
||||
* Significantly improved exploration algorithm.
|
||||
@ -812,7 +811,6 @@ More info at http://wiki.vcmi.eu/index.php?title=Adventure_AI
|
||||
* Extended building dependencies support
|
||||
|
||||
### MODS:
|
||||
* See http://wiki.vcmi.eu/index.php?title=Modding_changelog#0.94_-.3E_0.95 for format changes
|
||||
* Custom victory/loss conditions for maps or campaigns
|
||||
* 7 days without towns loss condition is no longer hardcoded
|
||||
* Only changed mods will be validated
|
||||
@ -870,7 +868,6 @@ More info at http://wiki.vcmi.eu/index.php?title=Adventure_AI
|
||||
* Fixed crash at month of double population.
|
||||
|
||||
### MODS:
|
||||
* See http://wiki.vcmi.eu/index.php?title=Modding_changelog#0.92_-.3E_0.93 for compatibility info.
|
||||
* Improved json validation. Now it support most of features from latest json schema draft.
|
||||
* Icons use path to icon instead of image indexes.
|
||||
* It is possible to edit data of another mod or H3 data via mods.
|
||||
|
@ -3,7 +3,7 @@
|
||||
<string name="url_project_page" translatable="false">https://vcmi.eu</string>
|
||||
<string name="url_project_repo" translatable="false">https://github.com/vcmi/vcmi</string>
|
||||
<string name="url_launcher_repo" translatable="false">https://github.com/vcmi/vcmi-android</string>
|
||||
<string name="url_launcher_privacy" translatable="false">https://github.com/vcmi/vcmi/wiki/VCMI-App-Privacy-Policy</string>
|
||||
<string name="url_launcher_privacy" translatable="false">https://github.com/vcmi/vcmi/blob/master/docs/players/Privacy_Policy.md</string>
|
||||
|
||||
<string name="app_name">VCMI</string>
|
||||
<string name="server_name">VCMI Server</string>
|
||||
|
@ -1,20 +0,0 @@
|
||||
Because Horn of the Abyss and Tides of War expansions change Conflux townscreen (and some other minor aspects) it is not trivial task to get all features at once without incompatibilities and visual bugs. This article describes what to enable and/or disable in laucher to play maps safely.
|
||||
|
||||
1. If you want to play only Horn of the Abyss mod without Tides of War (then you won't get alternate creatures in OH3 towns) - it'e easy task. You must disable Tides of War mod in the launcher.
|
||||
|
||||
![image](https://github.com/vcmi/vcmi/assets/29593042/1e4d9c1a-9588-42da-aeea-913db3d46b4b)
|
||||
|
||||
2. If you want to play only Tides of War mod without Horn of the Abyss (then you won't get Cove town and many other features) - you must disable Horn of the Abyss mod in the launcher **and** Hota balance compatibility patch must be **disabled!**
|
||||
|
||||
![image](https://github.com/vcmi/vcmi/assets/29593042/0ecb04ea-2f7f-4c25-a4c5-269af098ee49)
|
||||
|
||||
3. If you want to play Horn of the Abyss mod **and** Tides of War mod **without** HotA's balance changes (maybe you don't like it), correct launcher settings are:
|
||||
|
||||
![image](https://github.com/vcmi/vcmi/assets/29593042/01da1b8a-6547-4843-99b5-576017ea45f0)
|
||||
|
||||
4. Full HotA and ToW compatibility is provided by 'all green' line (except HotA and ToW main menu submods - they can be enabled/disabled anytime).
|
||||
|
||||
![image](https://github.com/vcmi/vcmi/assets/29593042/cec57cc9-5926-4c48-97f9-0ab17058dafd)
|
||||
|
||||
For more Q&A, please visit VCMI [discord](https://discord.com/invite/chBT42V) channel or [slack](https://slack.vcmi.eu/) channel.
|
||||
|
@ -1,68 +0,0 @@
|
||||
## Game engine features
|
||||
### [Support remaining H3 features](https://github.com/vcmi/vcmi/labels/h3feature)
|
||||
- **Description**: Original goal of vcmi project, as of right now almost all H3 features are supported. However, most of remaining features often require somewhat extensive changes.
|
||||
- **Current estimation**: vcmi-1.2 (Battles), unknown(Full support)
|
||||
- **Priority**: medium
|
||||
- **Current assignee**: [IvanSavenko](https://github.com/IvanSavenko)
|
||||
### [SDL abstraction layer & hardware acceleration](https://github.com/vcmi/vcmi/issues/1263)
|
||||
- **Description**: While hardware acceleration is not critically important for vcmi, most of preceding steps are necessary for general code improvement.
|
||||
- **Current estimation**: vcmi-1.3 (Testing), unknown (Full support)
|
||||
- **Priority**: medium
|
||||
- **Current assignee**: [IvanSavenko](https://github.com/IvanSavenko)
|
||||
|
||||
## Mobile Platforms
|
||||
### [Adopt interface to touchscreen devices](https://github.com/vcmi/vcmi/labels/touchscreen)
|
||||
- TODO: who among devs is interested in this? When do we expect any progress on this?
|
||||
### Closer and frequent integration with distributing platforms (google store, altstore, ideally appstore)
|
||||
- TODO: what exactly is "Closer and frequent integration"? What blocks us from doing this?
|
||||
- TODO: Who among devs is interested in this? When do we expect any progress on this?
|
||||
### Port VCMI launcher to Android
|
||||
- TODO: What is current state with Android Launcher? What blocks us from doing this?
|
||||
- TODO: Who among devs is interested in this? When do we expect any progress on this?
|
||||
## Hota/HDMod features
|
||||
- [Better online mode](https://github.com/vcmi/vcmi/issues/1361)
|
||||
- [Quick battle](https://github.com/vcmi/vcmi/pull/1108)
|
||||
- Simultaneous turns
|
||||
- [Support Hota map format](https://github.com/vcmi/vcmi/issues/1259)
|
||||
|
||||
## Modding System
|
||||
### Flexibility for configurable objects
|
||||
- TODO: describe what else needs to be exposed to modding system
|
||||
### [Sod as mod](https://github.com/vcmi/vcmi/milestone/3)
|
||||
- Details and solution description are [here](https://github.com/vcmi/vcmi/issues/1158)
|
||||
### [Map editor](https://github.com/vcmi/vcmi/labels/editor)
|
||||
- [List of tasks](https://github.com/Nordsoft91/vcmi/issues) to be done in originator's fork
|
||||
### Implement other modding tools
|
||||
- Resource viewer embedded into map editor
|
||||
- Campaign editor
|
||||
- RMG template editor
|
||||
### Scripting
|
||||
- Description: Fundaments for scripting support is made, the scripting features just need to be gradually implemented
|
||||
- Potential assignee: None?
|
||||
### Missing WoG features
|
||||
- Descriptions: Implement some missing WoG features like reviving commanders for money
|
||||
- Potential assignee: None?
|
||||
|
||||
## AI
|
||||
- [Battle AI](https://github.com/vcmi/vcmi/labels/battleai)
|
||||
- Tactics ability
|
||||
- Utilize more spells
|
||||
- Proper moment for retreat/surrender
|
||||
- Use some battle tricks (surround shooters, etc)
|
||||
- [Adventure AI](https://github.com/vcmi/vcmi/labels/nullkillerai)
|
||||
|
||||
## Easy of development
|
||||
- Automatic test system
|
||||
- Run unit tests on GitHub actions - implement resources stub for it
|
||||
- Automatic data installation
|
||||
- Installation wizard from launcher which copies necessary resources automatically
|
||||
- Better documentation for code and for modders
|
||||
|
||||
## Exclusive Content
|
||||
- High quality mods at scale of add-ons, which should contain
|
||||
- New content (factions, units, spells, terrains whatever),
|
||||
- Unique scenarios, campaigns, story
|
||||
- New game mechanics (random idea - add level above ground “sky” with “skyboat” transport)
|
||||
|
||||
## Community
|
||||
- marketing and finding manpower - linux & open source enthusiast communities could be good start to find h3 fan devs
|
@ -1,90 +0,0 @@
|
||||
The list of all essential, optional and requested features alongside
|
||||
with the team members interested in them.
|
||||
|
||||
# Heroes III
|
||||
|
||||
[Missing features at Trello](https://trello.com/b/68e5rAAl/vcmi-missing-features-only)
|
||||
|
||||
### HD mod/quality of life
|
||||
|
||||
These are necessary, as although they werent present back in 1999, they
|
||||
are standard today. See here for full list of enhancements:
|
||||
<https://sites.google.com/site/heroes3hd/eng/description/extended-ui>
|
||||
|
||||
- this one not sure if its a bug or missing hd mod feature: it should be possible to preview hero screen when choosing a skill on levelup.
|
||||
|
||||
### Random map generator
|
||||
|
||||
Dydzio said about it on Slack:
|
||||
|
||||
better selection lists for random map generator template - two versions
|
||||
(two bitmaps provided) also one more thing - for random map template
|
||||
pick my vision was to create more generic select list component and make
|
||||
town portal select component derive from it
|
||||
|
||||
### Adventure AI
|
||||
|
||||
- More functionality
|
||||
- Adventure map spells support
|
||||
- Survival instinct - AI defending towns, escaping etc.
|
||||
- Handling of all adventure map objects
|
||||
- Evaluating game objects
|
||||
- priority for visited objects over others sharing similiar
|
||||
function
|
||||
- Support for new objects possible to add via mods - use abstract
|
||||
interface to determine rewards etc.
|
||||
- Advanced strategy
|
||||
- Battle preparation (constructing suitable army & strategy)
|
||||
- Expert system for Bonuses
|
||||
([Warmonger](http://forum.vcmi.eu/profile.php?mode=viewprofile&u=130))
|
||||
|
||||
### Main menu
|
||||
|
||||
- Hall of Fame
|
||||
|
||||
# Modding
|
||||
|
||||
- Possibility for creatures to cast arbitrary spells, as in H4/H5
|
||||
|
||||
### Scripting system
|
||||
|
||||
- Language support
|
||||
- Synchronising scripts in multiplayer
|
||||
|
||||
### Wog features
|
||||
|
||||
- Mithril
|
||||
- ERM handling
|
||||
|
||||
# New features
|
||||
|
||||
- Support for multiple map levels
|
||||
- [New map editor](http://forum.vcmi.eu/viewtopic.php?t=1139)
|
||||
- Installer
|
||||
|
||||
### Online game
|
||||
|
||||
- Simultaneous turns
|
||||
- Spectator mode
|
||||
- Dedicated server mode
|
||||
- [Replays](http://forum.vcmi.eu/viewtopic.php?t=264)
|
||||
|
||||
# New graphics
|
||||
|
||||
### New menus project and graphics
|
||||
|
||||
- New stack experience menu ([forum
|
||||
thread](http://forum.vcmi.eu/viewtopic.php?t=376&start=0))
|
||||
- New stack artifact dialog
|
||||
|
||||
### Improved support for high resolutions
|
||||
|
||||
- Auto-adjust resolution
|
||||
- Moddable menus
|
||||
|
||||
### New players
|
||||
|
||||
- More player color graphics
|
||||
- New menus
|
||||
|
||||
### 32-bit graphics
|
@ -1,12 +1,7 @@
|
||||
< [Documentation](../Readme.md) / Bonus System
|
||||
|
||||
The bonus system of VCMI is a set of mechanisms that make handling of different bonuses for heroes, towns, players and units easier. The system consists of a set of nodes representing objects that can be a source or a subject of a bonus and two directed acyclic graphs (DAGs) representing inheritance and propagation of bonuses. Core of bonus system is defined in HeroBonus.h file.
|
||||
|
||||
Here is a brief sketch of the system (black arrows indicate the direction of inheritance and red arrows the direction of propagation):
|
||||
|
||||
<figure>
|
||||
<img src="Bonus_system.png" title="Bonus_system.png" />
|
||||
<figcaption>Bonus_system.png</figcaption>
|
||||
</figure>
|
||||
|
||||
## Propagation and inheritance
|
||||
|
||||
Each bonus originates from some node in the bonus system, and may have propagator and limiter objects attached to it. Bonuses are shared around as follows:
|
||||
|
@ -1,3 +1,5 @@
|
||||
< [Documentation](../Readme.md) / Building for Android
|
||||
|
||||
The following instructions apply to **v1.2 and later**. For earlier versions the best documentation is https://github.com/vcmi/vcmi-android/blob/master/building.txt (and reading scripts in that repo), however very limited to no support will be provided from our side if you wish to go down that rabbit hole.
|
||||
|
||||
*Note*: building has been tested only on Linux and macOS. It may or may not work on Windows out of the box.
|
||||
@ -11,14 +13,16 @@ The following instructions apply to **v1.2 and later**. For earlier versions the
|
||||
- - install with Android Studio
|
||||
- - install with `sdkmanager` command line tool
|
||||
- - download from https://developer.android.com/ndk/downloads
|
||||
- - download with Conan, see [#NDK and Conan](#NDK_and_Conan)
|
||||
- - download with Conan, see [#NDK and Conan](#ndk-and-conan)
|
||||
5. (optional) Ninja: download from your package manager or from https://github.com/ninja-build/ninja/releases
|
||||
|
||||
## Obtaining source code
|
||||
|
||||
Clone https://github.com/vcmi/vcmi with submodules. Example for command line:
|
||||
|
||||
`git clone --recurse-submodules https://github.com/vcmi/vcmi.git`
|
||||
```sh
|
||||
git clone --recurse-submodules https://github.com/vcmi/vcmi.git
|
||||
```
|
||||
|
||||
## Obtaining dependencies
|
||||
|
||||
@ -35,13 +39,17 @@ Conan must be aware of the NDK location when you execute `conan install`. There'
|
||||
|
||||
- the easiest is to download NDK from Conan (option 1 in the docs), then all the magic happens automatically. You need to create your own Conan profile that imports our Android profile and adds 2 new lines (you can of course just copy everything from our profile into yours without including) and then pass this new profile to `conan install`:
|
||||
|
||||
`include(/path/to/vcmi/CI/conan/android-64)`
|
||||
`[tool_requires]`
|
||||
`android-ndk/r25c`
|
||||
```sh
|
||||
include(/path/to/vcmi/CI/conan/android-64)
|
||||
[tool_requires]
|
||||
android-ndk/r25c
|
||||
```
|
||||
|
||||
- to use an already installed NDK, you can simply pass it on the command line to `conan install`:
|
||||
|
||||
`conan install -c tools.android:ndk_path=/path/to/ndk ...`
|
||||
```sh
|
||||
conan install -c tools.android:ndk_path=/path/to/ndk ...
|
||||
```
|
||||
|
||||
## Build process
|
||||
|
||||
@ -51,8 +59,10 @@ Building for Android is a 2-step process. First, native C++ code is compiled to
|
||||
|
||||
This is a traditional CMake project, you can build it from command line or some IDE. You're not required to pass any custom options (except Conan toolchain file), defaults are already good. If you wish to use your own CMake presets, inherit them from our `build-with-conan` preset. Example:
|
||||
|
||||
`cmake -S . -B ../build -G Ninja -D CMAKE_BUILD_TYPE=Debug --toolchain ...`
|
||||
`cmake --build ../build`
|
||||
```sh
|
||||
cmake -S . -B ../build -G Ninja -D CMAKE_BUILD_TYPE=Debug --toolchain ...
|
||||
cmake --build ../build
|
||||
```
|
||||
|
||||
You can also see a more detailed walkthrough on CMake configuration at [How to build VCMI (macOS)](../developers/Building_macOS.md).
|
||||
|
||||
@ -62,12 +72,14 @@ After the C++ part is built, native shared libraries are copied to the appropria
|
||||
|
||||
Example how to build from command line in Bash shell, assumes that current working directory is VCMI repository:
|
||||
|
||||
`# the following environment variables must be set`
|
||||
`export JAVA_HOME=/path/to/jdk11`
|
||||
`export ANDROID_HOME=/path/to/android/sdk`
|
||||
```sh
|
||||
# the following environment variables must be set
|
||||
export JAVA_HOME=/path/to/jdk11
|
||||
export ANDROID_HOME=/path/to/android/sdk
|
||||
``
|
||||
`cd android`
|
||||
`./gradlew assembleDebug`
|
||||
cd android
|
||||
./gradlew assembleDebug
|
||||
```
|
||||
|
||||
APK will appear in `android/vcmi-app/build/outputs/apk/debug` directory which you can then install to your device with `adb install -r /path/to/apk` (adb command is from Android command line tools).
|
||||
|
||||
|
@ -1,9 +1,11 @@
|
||||
< [Documentation](../Readme.md) / Building on Linux
|
||||
|
||||
# Compiling VCMI
|
||||
|
||||
- Current baseline requirement for building is Ubuntu 20.04
|
||||
- Supported C++ compilers for UNIX-like systems are GCC 5.5+ and Clang 13+
|
||||
- Current baseline requirement for building is Ubuntu 20.04
|
||||
- Supported C++ compilers for UNIX-like systems are GCC 9+ and Clang 13+
|
||||
|
||||
Older distributions and compilers might work, but they aren't tested by [Travis CI](https://travis-ci.org/vcmi/vcmi/)
|
||||
Older distributions and compilers might work, but they aren't tested by Github CI (Actions)
|
||||
|
||||
# Installing dependencies
|
||||
|
||||
@ -11,31 +13,29 @@ Older distributions and compilers might work, but they aren't tested by [Travis
|
||||
|
||||
To compile, the following packages (and their development counterparts) are needed to build:
|
||||
|
||||
- CMake 3.10 or newer
|
||||
- CMake
|
||||
- SDL2 with devel packages: mixer, image, ttf
|
||||
- zlib and zlib-devel
|
||||
- Boost C++ libraries v1.48+: program-options, filesystem, system, thread, locale
|
||||
- Recommended, if you want to build launcher or map editor: Qt 5, widget and network modules
|
||||
- Recommended, FFmpeg libraries, if you want to watch in-game videos: libavformat and libswscale. Their name could be libavformat-devel and libswscale-devel, or ffmpeg-libs-devel or similar names.
|
||||
- Boost C++ libraries v1.48+: program-options, filesystem, system, thread, locale
|
||||
- Optional, if you want to build scripting modules: LuaJIT
|
||||
|
||||
## On Debian-based systems (e.g. Ubuntu)
|
||||
|
||||
For Ubuntu 22.04 (jammy) or newer you need to install this list of packages, including **libtbb2-dev**:
|
||||
|
||||
`sudo apt-get install cmake g++ libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev zlib1g-dev libavformat-dev libswscale-dev libboost-dev libboost-filesystem-dev libboost-system-dev libboost-thread-dev libboost-program-options-dev libboost-locale-dev qtbase5-dev libtbb2-dev libluajit-5.1-dev qttools5-dev`
|
||||
|
||||
For Ubuntu 21.10 (impish) or older and all versions of Debian (9 stretch - 11 bullseye) you need to install this list of packages, including **libtbb-dev**:
|
||||
For Ubuntu and Debian you need to install this list of packages:
|
||||
|
||||
`sudo apt-get install cmake g++ libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev zlib1g-dev libavformat-dev libswscale-dev libboost-dev libboost-filesystem-dev libboost-system-dev libboost-thread-dev libboost-program-options-dev libboost-locale-dev qtbase5-dev libtbb-dev libluajit-5.1-dev qttools5-dev`
|
||||
|
||||
Alternatively if you have VCMI installed from repository or PPA you can use:
|
||||
|
||||
sudo apt-get build-dep vcmi
|
||||
`sudo apt-get build-dep vcmi`
|
||||
|
||||
## On RPM-based distributions (e.g. Fedora)
|
||||
|
||||
sudo yum install cmake gcc-c++ SDL2-devel SDL2_image-devel SDL2_ttf-devel SDL2_mixer-devel boost boost-devel boost-filesystem boost-system boost-thread boost-program-options boost-locale zlib-devel ffmpeg-devel ffmpeg-libs qt5-qtbase-devel tbb-devel luajit-devel fuzzylite-devel
|
||||
`sudo yum install cmake gcc-c++ SDL2-devel SDL2_image-devel SDL2_ttf-devel SDL2_mixer-devel boost boost-devel boost-filesystem boost-system boost-thread boost-program-options boost-locale zlib-devel ffmpeg-devel ffmpeg-libs qt5-qtbase-devel tbb-devel luajit-devel fuzzylite-devel`
|
||||
|
||||
NOTE: `fuzzylite-devel` package is no longer available in recent version of Fedora, for example Fedora 38. It's not a blocker because VCMI bundles fuzzylite lib in its source code.
|
||||
|
||||
## On Arch-based distributions
|
||||
|
||||
@ -61,8 +61,10 @@ You can get latest sources with:
|
||||
|
||||
## Configuring Makefiles
|
||||
|
||||
`mkdir build && cd build`
|
||||
`cmake ../vcmi`
|
||||
```sh
|
||||
mkdir build && cd build
|
||||
cmake ../vcmi
|
||||
```
|
||||
|
||||
# Additional options that you may want to use:
|
||||
|
||||
@ -82,23 +84,50 @@ That will generate vcmiclient, vcmiserver, vcmilauncher as well as .so libraries
|
||||
|
||||
## RPM package
|
||||
|
||||
The first step is to prepare a RPM build environment. On Fedora systems you can follow this guide: <http://fedoraproject.org/wiki/How_to_create_an_RPM_package#SPEC_file_overview>
|
||||
The first step is to prepare a RPM build environment. On Fedora systems you can follow this guide: http://fedoraproject.org/wiki/How_to_create_an_RPM_package#SPEC_file_overview
|
||||
|
||||
1. Download the file rpm/vcmi.spec from any tagged VCMI release for which you wish to build a RPM package via the SVN Browser trac at this URL for example(which is for VCMI 0.9): <http://sourceforge.net/apps/trac/vcmi/browser/tags/0.9/rpm/vcmi.spec>
|
||||
0. Enable RPMFusion free repo to access to ffmpeg libs:
|
||||
|
||||
2. Copy the file to ~/rpmbuild/SPECS
|
||||
```sh
|
||||
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
|
||||
```
|
||||
|
||||
3. Follow instructions in the vcmi.spec. You have to export the corresponding SVN tag, compress it to a g-zipped archive and copy it to ~/rpmbuild/SOURCES. Instructions are written as comments and you can copy/paste commands into terminal.
|
||||
NOTE: the stock ffmpeg from Fedora repo is no good as it has stripped lots of codecs
|
||||
|
||||
1. Perform a git clone from a tagged branch for the right Fedora version from https://github.com/rpmfusion/vcmi; for example for Fedora 38: <pre>git clone -b f38 --single-branch https://github.com/rpmfusion/vcmi.git</pre>
|
||||
|
||||
2. Copy all files to ~/rpmbuild/SPECS with command: <pre>cp vcmi/* ~/rpmbuild/SPECS</pre>
|
||||
|
||||
3. Fetch all sources by using spectool:
|
||||
|
||||
```sh
|
||||
sudo dnf install rpmdevtools
|
||||
spectool -g -R ~/rpmbuild/SPECS/vcmi.spec
|
||||
```
|
||||
|
||||
4. Fetch all dependencies required to build the RPM:
|
||||
|
||||
```sh
|
||||
sudo dnf install dnf-plugins-core
|
||||
sudo dnf builddep ~/rpmbuild/SPECS/vcmi.spec
|
||||
```
|
||||
|
||||
4. Go to ~/rpmbuild/SPECS and open terminal in this folder and type:
|
||||
`rpmbuild -ba vcmi.spec (this will build rpm and source rpm)`
|
||||
```sh
|
||||
rpmbuild -ba ~/rpmbuild/SPECS/vcmi.spec
|
||||
```
|
||||
|
||||
5. Generated RPM is in folder ~/rpmbuild/RPMS
|
||||
|
||||
If you want to package the generated RPM above for different processor architectures and operating systems you can use the tool mock. Moreover, it is necessary to install mock-rpmfusion_free due to the packages ffmpeg-devel and ffmpeg-libs which aren't available in the standard RPM repositories(at least for Fedora). Go to ~/rpmbuild/SRPMS in terminal and type:
|
||||
If you want to package the generated RPM above for different processor architectures and operating systems you can use the tool mock.
|
||||
Moreover, it is necessary to install mock-rpmfusion_free due to the packages ffmpeg-devel and ffmpeg-libs which aren't available in the standard RPM repositories(at least for Fedora). Go to ~/rpmbuild/SRPMS in terminal and type:
|
||||
|
||||
`mock -r fedora-17-i386-rpmfusion_free path_to_source_RPM`
|
||||
`mock -r fedora-17-x86_64-rpmfusion_free path_to_source_RPM`
|
||||
```sh
|
||||
mock -r fedora-38-aarch64-rpmfusion_free path_to_source_RPM
|
||||
mock -r fedora-38-x86_64-rpmfusion_free path_to_source_RPM
|
||||
```
|
||||
|
||||
For other distributions that uses RPM, chances are there might be a spec file for VCMI. If there isn't, you can adapt the RPMFusion's file
|
||||
|
||||
Available root environments and their names are listed in /etc/mock.
|
||||
|
||||
@ -108,7 +137,7 @@ Available root environments and their names are listed in /etc/mock.
|
||||
|
||||
2. Run dpkg-buildpackage command from vcmi source directory
|
||||
|
||||
```
|
||||
```sh
|
||||
sudo apt-get install debhelper devscripts
|
||||
cd /path/to/source
|
||||
dpkg-buildpackage
|
||||
|
@ -1,3 +1,5 @@
|
||||
< [Documentation](../Readme.md) / Building on Windows
|
||||
|
||||
# Preparations
|
||||
Windows builds can be made in more than one way and with more than one tool. This guide focuses on the simplest building process using Microsoft Visual Studio 2022
|
||||
|
||||
@ -5,8 +7,8 @@ Windows builds can be made in more than one way and with more than one tool. Thi
|
||||
|
||||
- Windows Vista or newer.
|
||||
- [Microsoft Visual Studio](https://visualstudio.microsoft.com/downloads/)
|
||||
- Git or git GUI, for example, SourceTree [download](http://www.sourcetreeapp.com/download)
|
||||
- CMake [download](https://cmake.org/download/). During install after accepting license agreement make sure to check "Add CMake to the system PATH for all users".
|
||||
- Git or git GUI, for example, SourceTree [download link](http://www.sourcetreeapp.com/download)
|
||||
- CMake [download link](https://cmake.org/download/). During install after accepting license agreement make sure to check "Add CMake to the system PATH for all users".
|
||||
- To unpack pre-build Vcpkg: [7-zip](http://www.7-zip.org/download.html)
|
||||
- Optionally, to create installer: [NSIS](http://nsis.sourceforge.net/Main_Page)
|
||||
|
||||
@ -17,8 +19,10 @@ Create a directory for VCMI development, eg. `C:\VCMI` We will call this directo
|
||||
Warning! Replace `%VCMI_DIR%` with path you've chosen for VCMI installation in the following commands.
|
||||
|
||||
It is recommended to avoid non-ascii characters in the path to your working folders. The folder should not be write-protected by system.
|
||||
|
||||
Good locations:
|
||||
- `C:\VCMI`
|
||||
|
||||
Bad locations:
|
||||
- `C:\Users\Michał\VCMI (non-ascii character)`
|
||||
- `C:\Program Files (x86)\VCMI (write protection)`
|
||||
@ -62,9 +66,12 @@ From command line use:
|
||||
|
||||
### Build vcpkg and dependencies
|
||||
|
||||
- Run `%VCMI_DIR%/vcpkg/bootstrap-vcpkg.bat`
|
||||
- For 32-bit build run: `%VCMI_DIR%/vcpkg/vcpkg.exe install tbb:x64-windows fuzzylite:x64-windows sdl2:x64-windows sdl2-image:x64-windows sdl2-ttf:x64-windows sdl2-mixer[mpg123]:x64-windows boost:x64-windows qt5-base:x64-windows ffmpeg:x64-windows luajit:x64-windows`
|
||||
- For 64-bit build run: `%VCMI_DIR%/vcpkg/vcpkg.exe install install tbb:x86-windows fuzzylite:x86-windows sdl2:x86-windows sdl2-image:x86-windows sdl2-ttf:x86-windows sdl2-mixer[mpg123]:x86-windows boost:x86-windows qt5-base:x86-windows ffmpeg:x86-windows luajit:x86-windows`
|
||||
- Run
|
||||
`%VCMI_DIR%/vcpkg/bootstrap-vcpkg.bat`
|
||||
- For 32-bit build run:
|
||||
`%VCMI_DIR%/vcpkg/vcpkg.exe install tbb:x64-windows fuzzylite:x64-windows sdl2:x64-windows sdl2-image:x64-windows sdl2-ttf:x64-windows sdl2-mixer[mpg123]:x64-windows boost:x64-windows qt5-base:x64-windows ffmpeg:x64-windows luajit:x64-windows`
|
||||
- For 64-bit build run:
|
||||
`%VCMI_DIR%/vcpkg/vcpkg.exe install install tbb:x86-windows fuzzylite:x86-windows sdl2:x86-windows sdl2-image:x86-windows sdl2-ttf:x86-windows sdl2-mixer[mpg123]:x86-windows boost:x86-windows qt5-base:x86-windows ffmpeg:x86-windows luajit:x86-windows`
|
||||
|
||||
For the list of the packages used you can also consult [vcmi-deps-windows readme](https://github.com/vcmi/vcmi-deps-windows) in case this article gets outdated a bit.
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
< [Documentation](../Readme.md) / Building for iOS
|
||||
|
||||
## Requirements
|
||||
|
||||
1. **macOS**
|
||||
@ -12,7 +14,7 @@ Clone <https://github.com/vcmi/vcmi> with submodules. Example for command line:
|
||||
|
||||
## Obtaining dependencies
|
||||
|
||||
There're 2 ways to get prebuilt dependencies:
|
||||
There are 2 ways to get prebuilt dependencies:
|
||||
|
||||
- [Conan package manager](https://github.com/vcmi/vcmi/tree/develop/docs/conan.md) - recommended. Note that the link points to the cutting-edge state in `develop` branch, for the latest release check the same document in the [master branch (https://github.com/vcmi/vcmi/tree/master/docs/conan.md).
|
||||
- [legacy manually built libraries](https://github.com/vcmi/vcmi-ios-deps) - can be used if you have Xcode 11/12 or to build for simulator / armv7 device
|
||||
|
@ -1,3 +1,5 @@
|
||||
< [Documentation](../Readme.md) / Building on macOS
|
||||
|
||||
# Requirements
|
||||
|
||||
1. C++ toolchain, either of:
|
||||
|
@ -1,13 +1,10 @@
|
||||
< [Documentation](../Readme.md) / Code Structure
|
||||
|
||||
The code of VCMI is divided into several main parts: client, server, lib and AIs, each one in a separate binary file.
|
||||
|
||||
# The big picture
|
||||
|
||||
<figure>
|
||||
<img src="Architektura.png" title="Architektura.png" />
|
||||
<figcaption>Architektura.png</figcaption>
|
||||
</figure>
|
||||
|
||||
VCMI contains three core projects: VCMI_lib (dll / so), VCMI_client (executable) and VCMI_server (executable). [Server](Server "wikilink") handles all [game mechanics](game_mechanics "wikilink") and events. [Client](Client "wikilink") presents [game state](game_state "wikilink") and events to player and collects input from him.
|
||||
VCMI contains three core projects: VCMI_lib (dll / so), VCMI_client (executable) and VCMI_server (executable). Server handles all game mechanics and events. Client presents game state and events to player and collects input from him.
|
||||
|
||||
During the game, we have one (and only one) server and one or more (one for each player computer) clients.
|
||||
|
||||
@ -19,19 +16,19 @@ It's basically CGameState class object and everything that's accessible from it:
|
||||
|
||||
## Bonus system
|
||||
|
||||
One of the more important pieces of VCMI is the [bonus system](bonus_system "wikilink"). It's described in a separate article.
|
||||
One of the more important pieces of VCMI is the [bonus system](Bonus_System.md). It's described in a separate article.
|
||||
|
||||
## Configuration
|
||||
|
||||
Most of VCMI configuration files uses Json format and located in "config" directory
|
||||
|
||||
### [Json parser and writer](Json_parser_and_writer "wikilink")
|
||||
### Json parser and writer
|
||||
|
||||
# Client
|
||||
|
||||
## Main purposes of client
|
||||
|
||||
[Client](Client "wikilink") is responsible for:
|
||||
Client is responsible for:
|
||||
- displaying state of game to human player
|
||||
- capturing player's actions and sending requests to server
|
||||
- displaying changes in state of game indicated by server
|
||||
@ -41,30 +38,11 @@ Most of VCMI configuration files uses Json format and located in "config" direct
|
||||
Rendering of graphics relies heavily on SDL. Currently we do not have any wrapper for SDL internal structures and most of rendering is about blitting surfaces using SDL_BlitSurface. We have a few function that make rendering easier or make specific parts of rendering (like printing text). They are places in client/SDL_Extensions and client/SDL_Framerate (the second one contains code responsible for keeping appropriate framerate, it should work more smart than just SDL_Delay(miliseconds)).
|
||||
In rendering, Interface object system is quite helpful. Its base is CIntObject class that is basically a base class for our library of GUI components and other objects.
|
||||
|
||||
### Video player
|
||||
|
||||
Located in client/VideoHandler.cpp/.h, have several platform-specific versions:
|
||||
|
||||
- Using ffmpeg libraries.
|
||||
- Empty player
|
||||
|
||||
### [Primitive controls](Primitive_controls "wikilink")
|
||||
|
||||
## [Adventure map interface](Adventure_map_interface "wikilink")
|
||||
|
||||
TBD
|
||||
|
||||
## [Town interface](Town_interface "wikilink")
|
||||
|
||||
TBD
|
||||
|
||||
## [Battle interface](Battle_interface "wikilink")
|
||||
|
||||
# Server
|
||||
|
||||
## Main purposes of server
|
||||
|
||||
[Server](Server "wikilink") is responsible for:
|
||||
Server is responsible for:
|
||||
|
||||
- maintaining state of the game
|
||||
- handling requests from all clients participating in game
|
||||
@ -77,9 +55,9 @@ TBD
|
||||
|
||||
VCMI_Lib is a library that contains code common to server and client, so we avoid it's duplication. Important: the library code is common for client and server and used by them, but the library instance (in opposition to the library as file) is not shared by them! Both client and server create their own "copies" of lib with all its class instances.
|
||||
|
||||
iOS platform pioneered single process build, where server is a static library and not a dedicated executable. For that to work, the lib had to be wrapped into special namespace that is defined by client and server targets on iOS, so that single process is able to contain 2 versions of the library. To make it more convenient, a few macros were introduced that can be found in [Global.h](https://github.com/vcmi/vcmi/blob/develop/Global.h). The most important ones are `VCMI_LIB_NAMESPACE_BEGIN` and `VCMI_LIB_NAMESPACE_END` which must be used anywhere a symbol from the lib is needed, otherwise building iOS (or any other platform that would use single process approach) fails. See [#Wrapped namespace examples](#Wrapped_namespace_examples "wikilink").
|
||||
iOS platform pioneered single process build, where server is a static library and not a dedicated executable. For that to work, the lib had to be wrapped into special namespace that is defined by client and server targets on iOS, so that single process is able to contain 2 versions of the library. To make it more convenient, a few macros were introduced that can be found in [Global.h](https://github.com/vcmi/vcmi/blob/develop/Global.h). The most important ones are `VCMI_LIB_NAMESPACE_BEGIN` and `VCMI_LIB_NAMESPACE_END` which must be used anywhere a symbol from the lib is needed, otherwise building iOS (or any other platform that would use single process approach) fails.
|
||||
|
||||
[Lib](Lib "wikilink") contains code responsible for:
|
||||
Lib contains code responsible for:
|
||||
|
||||
- handling most of Heroes III files (.lod, .txt setting files)
|
||||
- storing information common to server and client like state of the game
|
||||
@ -87,12 +65,12 @@ iOS platform pioneered single process build, where server is a static library an
|
||||
- handling general game mechanics and related actions (only adventure map objects; it's an unwanted remnant of past development - all game mechanics should be handled by the server)
|
||||
- networking and serialization
|
||||
|
||||
### [Serialization](Serialization "wikilink")
|
||||
### Serialization
|
||||
|
||||
The serialization framework can serialize basic types, several standard containers among smart pointers and custom objects. Its design is based on the [boost serialization libraries](http://www.boost.org/doc/libs/1_52_0/libs/serialization/doc/index.html).
|
||||
In addition to the basic functionality it provides light-weight transfer of CGObjectInstance objects by sending only the index/id.
|
||||
|
||||
See the [Serialization](Serialization "wikilink") page for all the details.
|
||||
Serialization page for all the details.
|
||||
|
||||
### Wrapped namespace examples
|
||||
|
||||
@ -105,11 +83,6 @@ Both header and implementation of a new class inside the lib should have the fol
|
||||
`<code>`
|
||||
`VCMI_LIB_NAMESPACE_END`
|
||||
|
||||
Example:
|
||||
[header](https://github.com/vcmi/vcmi/blob/develop/lib/CBuildingHandler.h)
|
||||
and
|
||||
[implementation](https://github.com/vcmi/vcmi/blob/develop/lib/CBuildingHandler.cpp)
|
||||
|
||||
#### Headers outside the lib
|
||||
|
||||
Forward declarations of the lib in headers of other parts of the project need to be wrapped in the macros:
|
||||
@ -121,35 +94,31 @@ Forward declarations of the lib in headers of other parts of the project need to
|
||||
`<other forward declarations>`
|
||||
`<classes>`
|
||||
|
||||
Example:
|
||||
<https://github.com/vcmi/vcmi/blob/develop/server/CGameHandler.h>
|
||||
|
||||
#### New project part
|
||||
|
||||
If you're creating new project part, place `VCMI_LIB_USING_NAMESPACE` in its `StdInc.h` to be able to use lib classes without explicit namespace in implementation files. Example: <https://github.com/vcmi/vcmi/blob/develop/launcher/StdInc.h>
|
||||
|
||||
# [Artificial Intelligence](Artificial_Intelligence "wikilink") (AI)
|
||||
# Artificial Intelligence
|
||||
|
||||
## [StupidAI](StupidAI "wikilink")
|
||||
## StupidAI
|
||||
|
||||
Stupid AI is recent and used battle AI.
|
||||
|
||||
## [Adventure AI](Adventure_AI "wikilink")
|
||||
## Adventure AI
|
||||
|
||||
VCAI module is currently developed agent-based system driven by goals and heroes.
|
||||
|
||||
## [Programming challenge](Programming_challenge "wikilink")
|
||||
## Programming challenge
|
||||
|
||||
## [Fuzzy logic](Fuzzy_logic "wikilink")
|
||||
## Fuzzy logic
|
||||
|
||||
VCMI includes [FuzzyLite](http://code.google.com/p/fuzzy-lite/) library to make use of fuzzy rule-based algorithms. They are useful to handle uncertanity and resemble human behaviour who takes decisions based on rough observations. FuzzyLite is linked as separate static library in AI/FuzzyLite.lib file.
|
||||
|
||||
# [Utilities](Utilities "wikilink")
|
||||
# Utilities
|
||||
|
||||
## [Launcher](Launcher "wikilink")
|
||||
## Launcher
|
||||
|
||||
## [Duels](Duels "wikilink")
|
||||
## Duels
|
||||
|
||||
[Mod system proposal](Mod_system_proposal "wikilink")
|
||||
|
||||
## [ERM parser](ERM_parser "wikilink")
|
||||
## ERM parser
|
@ -1,8 +1,10 @@
|
||||
< [Documentation](../Readme.md) / Coding Guidelines
|
||||
|
||||
## C++ Standard
|
||||
|
||||
VCMI implementation bases on C++17 standard. Any feature is acceptable as long as it's will pass build on our CI, but there is list below on what is already being used.
|
||||
|
||||
Any compiler supporting C++17 should work, but this has not been thoroughly tested. You can find information about extensions and compiler support at [1](http://en.cppreference.com/w/cpp/compiler_support).
|
||||
Any compiler supporting C++17 should work, but this has not been thoroughly tested. You can find information about extensions and compiler support at http://en.cppreference.com/w/cpp/compiler_support
|
||||
|
||||
## Style Guidelines
|
||||
|
||||
@ -747,8 +749,7 @@ If you need a more detailed description for a method you can use such style:
|
||||
/// @return Description of the return value
|
||||
```
|
||||
|
||||
A good essay about writing comments:
|
||||
[2](http://ardalis.com/when-to-comment-your-code)
|
||||
A good essay about writing comments: http://ardalis.com/when-to-comment-your-code
|
||||
|
||||
### Casing
|
||||
|
||||
@ -770,7 +771,7 @@ Directories start with a lowercase letter and use the camel casing where necessa
|
||||
|
||||
### Logging
|
||||
|
||||
Outdated. There is separate entry for [Logging API](Logging_API "wikilink")
|
||||
Outdated. There is separate entry for [Logging API](Logging_API.md)
|
||||
|
||||
If you want to trace the control flow of VCMI, then you should use the macro LOG_TRACE or LOG_TRACE_PARAMS. The first one prints a message when the function is entered or leaved. The name of the function will also be logged. In addition to this the second macro, let's you specify parameters which you want to print. You should print traces with parameters like this:
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
< [Documentation](../Readme.md) / Using Conan
|
||||
|
||||
# Using dependencies from Conan
|
||||
|
||||
[Conan](https://conan.io/) is a package manager for C/C++. We provide prebuilt binary dependencies for some platforms that are used by our CI, but they can also be consumed by users to build VCMI. However, it's not required to use only the prebuilt binaries: you can build them from source as well.
|
||||
@ -36,20 +38,20 @@ Conan needs to generate CMake toolchain file to make dependencies available to C
|
||||
|
||||
In terminal `cd` to the VCMI source directory and run the following command. If you want to download prebuilt binaries from ConanCenter, also read the [next section](#using-prebuilt-binaries-from-conancenter).
|
||||
|
||||
<pre>
|
||||
```sh
|
||||
conan install . \
|
||||
--install-folder=<b><i>conan-generated</i></b> \
|
||||
--no-imports \
|
||||
--build=<b><i>never</i></b> \
|
||||
--profile:build=default \
|
||||
--profile:host=<b><i>CI/conan/PROFILE</i></b>
|
||||
</pre>
|
||||
```
|
||||
|
||||
The highlighted parts can be adjusted:
|
||||
|
||||
- ***conan-generated***: directory (absolute or relative) where the generated files will appear. This value is used in CMake presets from VCMI, but you can actually use any directory and override it in your local CMake presets.
|
||||
- ***never***: use this value to avoid building any dependency from source. You can also use `missing` to build recipes, that are not present in your local cache, from source.
|
||||
- ***CI/conan/PROFILE***: if you want to consume our prebuilt binaries, ***PROFILE*** must be replaced with one of filenames from our [Conan profiles directory](../CI/conan) (determining the right file should be straight-forward). Otherwise, either select one of our profiles or replace ***CI/conan/PROFILE*** with `default` (your default profile).
|
||||
- ***CI/conan/PROFILE***: if you want to consume our prebuilt binaries, ***PROFILE*** must be replaced with one of filenames from our [Conan profiles directory](../../CI/conan) (determining the right file should be straight-forward). Otherwise, either select one of our profiles or replace ***CI/conan/PROFILE*** with `default` (your default profile).
|
||||
|
||||
If you use `--build=never` and this command fails, then it means that you can't use prebuilt binaries out of the box. For example, try using `--build=missing` instead.
|
||||
|
||||
@ -79,7 +81,7 @@ In these examples only the minimum required amount of options is passed to `cmak
|
||||
|
||||
### Use our prebuilt binaries to build for macOS x86_64 with Xcode
|
||||
|
||||
```
|
||||
```sh
|
||||
conan install . \
|
||||
--install-folder=conan-generated \
|
||||
--no-imports \
|
||||
@ -95,7 +97,7 @@ cmake -S . -B build -G Xcode \
|
||||
|
||||
If you also want to build the missing binaries from source, use `--build=missing` instead of `--build=never`.
|
||||
|
||||
```
|
||||
```sh
|
||||
conan install . \
|
||||
--install-folder=~/my-dir \
|
||||
--no-imports \
|
||||
@ -110,7 +112,7 @@ cmake -S . -B build \
|
||||
|
||||
### Use our prebuilt binaries to build for iOS arm64 device with custom preset
|
||||
|
||||
```
|
||||
```sh
|
||||
conan install . \
|
||||
--install-folder=~/my-dir \
|
||||
--no-imports \
|
||||
|
@ -1,3 +1,5 @@
|
||||
< [Documentation](../Readme.md) / Development with Qt Creator
|
||||
|
||||
# Introduction to Qt Creator
|
||||
|
||||
Qt Creator is the recommended IDE for VCMI development on Linux distributions, but it may be used on other operating systems as well. It has the following advantages compared to other IDEs:
|
||||
@ -6,7 +8,7 @@ Qt Creator is the recommended IDE for VCMI development on Linux distributions, b
|
||||
- Almost no manual configuration when used with CMake. Project configuration is read from CMake text files,
|
||||
- Easy to setup and use with multiple different compiler toolchains: GCC, Visual Studio, Clang
|
||||
|
||||
You can install Qt Creator from repository, but better to stick to latest version from Qt website: https://www.qt.io/download-open-source/
|
||||
You can install Qt Creator from repository, but better to stick to latest version from Qt website: https://www.qt.io/download-qt-installer-oss
|
||||
|
||||
## Configuration
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 5.0 KiB |
@ -1,3 +1,5 @@
|
||||
< [Documentation](../Readme.md) / Logging System
|
||||
|
||||
# Features
|
||||
|
||||
- A logger belongs to a "domain", this enables us to change log level settings more selectively
|
||||
@ -11,11 +13,7 @@
|
||||
|
||||
# Class diagram
|
||||
|
||||
<figure>
|
||||
<img src="Logging_Class_Diagram.jpg"
|
||||
title="Logging_Class_Diagram.jpg" />
|
||||
<figcaption>Logging_Class_Diagram.jpg</figcaption>
|
||||
</figure>
|
||||
![Logging_Class_Diagram](https://github.com/IvanSavenko/vcmi/assets/1576820/31c9b14e-a055-4b07-87fe-00da43430a2b)
|
||||
|
||||
Some notes:
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 26 KiB |
@ -1,3 +1,5 @@
|
||||
< [Documentation](../Readme.md) / Lua Scripting System
|
||||
|
||||
# Configuration
|
||||
|
||||
``` javascript
|
||||
|
@ -1,3 +1,5 @@
|
||||
< [Documentation](../Readme.md) / Serialization System
|
||||
|
||||
# Introduction
|
||||
|
||||
The serializer translates between objects living in our code (like int or CGameState\*) and stream of bytes. Having objects represented as a stream of bytes is useful. Such bytes can send through the network connection (so client and server can communicate) or written to the disk (savegames).
|
||||
@ -12,9 +14,9 @@ Different major version of VCMI likely change the format of the save game. Every
|
||||
|
||||
### Adding a new class
|
||||
|
||||
If you want your class to be serializable (eg. being storable in a savegame) you need to define a serialize method template, as described in [#User types](#User_types "wikilink")
|
||||
If you want your class to be serializable (eg. being storable in a savegame) you need to define a serialize method template, as described in [#User types](#user-types)
|
||||
|
||||
Additionally, if your class is part of one of registered object hierarchies (basically: if it derives from CGObjectInstance, IPropagator, ILimiter, CBonusSystemNode, CPack) it needs to be registered. Just add an appropriate entry in the `RegisterTypes.h` file. See [#Polymorphic serialization](#Polymorphic_serialization "wikilink") for more information.
|
||||
Additionally, if your class is part of one of registered object hierarchies (basically: if it derives from CGObjectInstance, IPropagator, ILimiter, CBonusSystemNode, CPack) it needs to be registered. Just add an appropriate entry in the `RegisterTypes.h` file. See polymorphic serialization for more information.
|
||||
|
||||
# How does it work
|
||||
|
||||
@ -31,7 +33,7 @@ It's not "really" portable, yet it works properly across all platforms we curren
|
||||
|
||||
### Pointers
|
||||
|
||||
Storing pointers mechanics can be and almost always is customized. See [#Additional features](#Additional_features "wikilink").
|
||||
Storing pointers mechanics can be and almost always is customized. See [#Additional features](additional-features).
|
||||
|
||||
In the most basic form storing pointer simply sends the object state and loading pointer allocates an object (using "new" operator) and fills its state with the stored data.
|
||||
|
||||
@ -118,8 +120,8 @@ struct DLL_LINKAGE Rumor
|
||||
{
|
||||
if(version >= 1065)
|
||||
h & name;
|
||||
else if(!h.saving) //when loading old savegame
|
||||
name = "no name"; //set name to some default value [could be done in class constructor as well]
|
||||
else //when loading old savegame
|
||||
name = "no name"; //set name to a sane default value
|
||||
|
||||
h & text;
|
||||
}
|
||||
@ -149,10 +151,10 @@ All three constructors take as the last parameter the name that will be used to
|
||||
|
||||
Here is the list of additional custom features serialzier provides. Most of them can be turned on and off.
|
||||
|
||||
- [#Polymorphic serialization](#Polymorphic_serialization "wikilink") — no flag to control it, turned on by calls to registerType.
|
||||
- [#Vectorized list member serialization](#Vectorized_list_member_serialization "wikilink") — enabled by smartVectorMembersSerialization flag.
|
||||
- [#Stack instance serialization](#Stack_instance_serialization "wikilink") — enabled by sendStackInstanceByIds flag.
|
||||
- [#Smart pointer serialization](#Smart_pointer_serialization "wikilink") — enabled by smartPointerSerialization flag.
|
||||
- Polymorphic serialization — no flag to control it, turned on by calls to registerType.
|
||||
- Vectorized list member serialization — enabled by smartVectorMembersSerialization flag.
|
||||
- Stack instance serialization — enabled by sendStackInstanceByIds flag.
|
||||
- Smart pointer serialization — enabled by smartPointerSerialization flag.
|
||||
|
||||
### Polymorphic serialization
|
||||
|
||||
@ -206,9 +208,8 @@ the last line is equivalent to
|
||||
connection << someCreature->idNumber;
|
||||
```
|
||||
|
||||
//Client code
|
||||
|
||||
``` cpp
|
||||
//Client code
|
||||
CCreature *someCreature = nullptr;
|
||||
connection >> someCreature;
|
||||
```
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
# Project Infrastructure
|
||||
|
||||
This page hold important information about project infrastructure for current and future contributors. At moment it's all maintained by me (SXX), but following information will be useful if someone going to replace me in future.
|
||||
This section hold important information about project infrastructure for current and future contributors. At moment it's all maintained by me (SXX), but following information will be useful if someone going to replace me in future.
|
||||
|
||||
## Services and accounts
|
||||
|
||||
@ -33,7 +33,7 @@ So far we using following services:
|
||||
- [Google Play Console](https://play.google.com/apps/publish/) account.
|
||||
- Hold ownership over VCMI Android App.
|
||||
- Owner: SXX
|
||||
- Administrator access: Warmonger, AVS.
|
||||
- Administrator access: Warmonger, AVS, Ivan.
|
||||
- Release manager access: Fay.
|
||||
|
||||
Not all services let us safely share login credentials, but at least when possible at least two of core developers must have access to them in case of emergency.
|
||||
@ -98,7 +98,7 @@ Reserve accounts for other code hosting services:
|
||||
|
||||
# Project Servers Configuration
|
||||
|
||||
This page dedicated to explain specific configurations of our servers for anyone who might need to improve it in future.
|
||||
This section dedicated to explain specific configurations of our servers for anyone who might need to improve it in future.
|
||||
|
||||
## Droplet configuration
|
||||
|
||||
|
@ -80,7 +80,7 @@ Game logic prohibits using modes unavailable for faction
|
||||
This field allows to configure specific items available in the market.
|
||||
In VCMI-1.3 it can be used only for `resource-skill` mode
|
||||
|
||||
See [Secondary skills](https://github.com/vcmi/vcmi/wiki/Modding-~-Objects-~-Rewardable#secondary-skills) description for more details
|
||||
See [Secondary skills](Rewardable.md#secondary-skills) description for more details
|
||||
|
||||
### Example for University of magic (e.g conflux building)
|
||||
|
||||
|
@ -69,7 +69,9 @@ Please check following developer guide: [How to build VCMI (Linux)]((../develope
|
||||
|
||||
To install VCMI you will need Heroes III: Shadow of Death or Complete edition.
|
||||
|
||||
## Install data using vcmibuilder script (recommended for non-Flatpak installs)
|
||||
## Install data using vcmibuilder script
|
||||
|
||||
Recommended for non-Flatpak installs.
|
||||
|
||||
To install Heroes 3 data using automated script you need any of:
|
||||
|
||||
|
@ -22,7 +22,7 @@ Note: if you don't need in-game videos, you can omit downloading/copying file VI
|
||||
|
||||
### Step 2.a: Installing data files with Finder or Windows explorer
|
||||
|
||||
To play the game, you need to upload HoMM3 data files - **Data**, **Maps** and **Mp3** directories - to the device. Use Finder (or iTunes, if you're on Windows or your macOS is 10.14 or earlier) for that. You can also add various [mods](https://wiki.vcmi.eu/Mod_list) by uploading **Mods** directory. Follow [official Apple guide](https://support.apple.com/en-us/HT210598) and place files into VCMI app. Unfortunately, Finder doesn't display copy progress, give it about 10 minutes to finish.
|
||||
To play the game, you need to upload HoMM3 data files - **Data**, **Maps** and **Mp3** directories - to the device. Use Finder (or iTunes, if you're on Windows or your macOS is 10.14 or earlier) for that. You can also add various mods by uploading **Mods** directory. Follow [official Apple guide](https://support.apple.com/en-us/HT210598) and place files into VCMI app. Unfortunately, Finder doesn't display copy progress, give it about 10 minutes to finish.
|
||||
|
||||
### Step 2.b: Installing data files using iOS device only
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
< [Documentation](../Readme.md) / Installation on macOS
|
||||
|
||||
**For iOS installation look here:
|
||||
<https://wiki.vcmi.eu/Installation_on_iOS>**
|
||||
**For iOS installation look here: (Installation on iOS)[Installation_iOS.md]
|
||||
|
||||
# Step 1: Download and install VCMI
|
||||
|
||||
|
@ -15,7 +15,7 @@ To install VCMI, simply unzip downloaded archive to main HoMM3 directory. To lau
|
||||
|
||||
## Linux
|
||||
|
||||
Visit [Wiki article](http://wiki.vcmi.eu/index.php?title=Installation_on_Linux) for Linux packages and installation guidelines.
|
||||
Visit [Installation on Linux](Installation_Linux.md) for Linux packages and installation guidelines.
|
||||
|
||||
# New features
|
||||
|
||||
@ -112,7 +112,7 @@ Following cheat codes have been implemented in VCMI. Type them in console:
|
||||
# Feedback
|
||||
|
||||
Our project is open and its sources are available for everyone to browse and download. We do our best to inform community of Heroes fans with all the details and development progress. We also look forward to your comments, support and advice.\
|
||||
A good place to start is [VCMI Wiki](http://wiki.vcmi.eu/index.php?title=Main_Page) which contains all necessary information for developers, testers and the people who would like to get familiar with our project. If you want to report a bug, use [Mantis Bugtracker](http://bugs.vcmi.eu/bug_report_advanced_page.php).
|
||||
A good place to start is [VCMI Documentation](../Readme.md) which contains all necessary information for developers, testers and the people who would like to get familiar with our project. If you want to report a bug, use [Mantis Bugtracker](http://bugs.vcmi.eu/bug_report_advanced_page.php).
|
||||
Make sure the issue is not already mentioned on [the list](http://bugs.vcmi.eu/view_all_bug_page.php) unless you can provide additional details for it. Please do not report as bugs features not yet implemented. For proposing new ideas and requests, visit [our board](http://forum.vcmi.eu/index.php).
|
||||
VCMI comes with its own bug handlers: the console which prints game log `(server_log, VCMI_Client_log, VCMI_Server_log)` and memory dump file (`.dmp`) created on crash on Windows systems. These may be very helpful when the nature of bug is not obvious, please attach them if necessary.
|
||||
To resolve an issue, we must be able to reproduce it on our computers. Please put down all circumstances in which a bug occurred and what did you do before, especially if it happens rarely or is not clearly visible. The better report, the better chance to track the bug quickly.
|
||||
@ -137,7 +137,7 @@ When it is finished, which is another year at least. Exact date is impossible to
|
||||
|
||||
## Are you going to add / change X?
|
||||
|
||||
VCMI recreates basic H3:SoD + WoG engine and does not add new content or modify original mechanics by default. Only engine and interface improvements are likely to be supported now. The list of possible features is placed on [Wiki TODO list](http://wiki.vcmi.eu/index.php?title=TODO_list). If you want something specific to be done, please present detailed project on [our board](http://forum.vcmi.eu/index.php). Of course you are free to contribute with anything you can do.
|
||||
VCMI recreates basic H3:SoD engine and does not add new content or modify original mechanics by default. Only engine and interface improvements are likely to be supported now. If you want something specific to be done, please present detailed project on [our board](http://forum.vcmi.eu/index.php). Of course you are free to contribute with anything you can do.
|
||||
|
||||
## Will it be possible to do Y?
|
||||
|
||||
@ -149,7 +149,7 @@ Report your bug. Details are described [here](#Feedback). The sooner you tell th
|
||||
|
||||
## What is the current status of the project?
|
||||
|
||||
Check [Wiki](http://wiki.vcmi.eu/index.php?title=VCMI), [release notes](http://forum.vcmi.eu/viewforum.php?f=1) or [changelog](https://github.com/vcmi/vcmi/blob/develop/ChangeLog). The best place to watch current changes as they are committed to the develop branch is the [Github commits page](https://github.com/vcmi/vcmi/commits/develop). The game is quite playable by now, although many important features are missing.
|
||||
Check [Documentation](../Readme.md), [release notes](http://forum.vcmi.eu/viewforum.php?f=1) or [changelog](https://github.com/vcmi/vcmi/blob/develop/ChangeLog). The best place to watch current changes as they are committed to the develop branch is the [Github commits page](https://github.com/vcmi/vcmi/commits/develop). The game is quite playable by now, although many important features are missing.
|
||||
|
||||
## I have a great idea!
|
||||
|
||||
@ -161,8 +161,8 @@ Yes, of course. VCMI is designed as a base for any further mods and uses own exe
|
||||
|
||||
## Can I help VCMI Project in any way?
|
||||
|
||||
If you are C++ programmer, graphican, tester or just have tons of ideas, do not hesistate - your help is needed. The game is huge and many different ares of activity are still waiting for someone like you. See [Wiki TODO list](http://wiki.vcmi.eu/index.php?title=TODO_list) for more info.
|
||||
If you are C++ programmer, graphican, tester or just have tons of ideas, do not hesistate - your help is needed. The game is huge and many different ares of activity are still waiting for someone like you.
|
||||
|
||||
## I would like to join development team.
|
||||
|
||||
You are always welcome. Contact the core team via [our board](http://forum.vcmi.eu/index.php). In the meantime, read 'building VCMI' guide at [Wiki](http://wiki.vcmi.eu/index.php?title=Main_Page).\ The usual way to join the team is to post your patch for review on our board. If the patch is positively rated by core team members, you will be given access to SVN repository.
|
||||
You are always welcome. Contact the core team via [our board](http://forum.vcmi.eu/index.php). The usual way to join the team is to post your patch for review on our board. If the patch is positively rated by core team members, you will be given access to SVN repository.
|
||||
|
@ -37,8 +37,8 @@
|
||||
<url type="homepage">https://vcmi.eu/</url>
|
||||
<url type="bugtracker">https://github.com/vcmi/vcmi/issues</url>
|
||||
<url type="faq">https://vcmi.eu/faq/</url>
|
||||
<url type="help">https://wiki.vcmi.eu/Main_Page</url>
|
||||
<url type="translate">https://github.com/vcmi/vcmi/wiki/Translations</url>
|
||||
<url type="help">https://github.com/vcmi/vcmi/blob/master/docs/Readme.md</url>
|
||||
<url type="translate">https://github.com/vcmi/vcmi/blob/master/docs/modders/Translations.md</url>
|
||||
<url type="contact">https://slack.vcmi.eu/</url>
|
||||
<url type="vcs-browser">https://github.com/vcmi/vcmi</url>
|
||||
<recommends>
|
||||
|
@ -91,7 +91,7 @@ void FirstLaunchView::on_pushButtonDataCopy_clicked()
|
||||
|
||||
void FirstLaunchView::on_pushButtonDataHelp_clicked()
|
||||
{
|
||||
static const QUrl vcmibuilderWiki("https://wiki.vcmi.eu/Using_vcmibuilder");
|
||||
static const QUrl vcmibuilderWiki("https://github.com/vcmi/vcmi/blob/master/docs/players/Installation_Linux.md#install-data-using-vcmibuilder-script");
|
||||
QDesktopServices::openUrl(vcmibuilderWiki);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user