Until version 2.4.0 is not released, it is better to keep it as 2.3.0
since `git describe --tags --dirty` would return `v2.3.0-...` until the
`v2.4.0` tag is created.
Accordingly, speed-dreams-data also reduced its version to 2.3.0. [1]
[1]: 5c58ce805d
This repository depends on the speed-dreams-data package in order to
generate a working package. However, in the context of CI/CD, it is
desirable to build this package without depending on the
speed-dreams-data, and instead assume it would be found on a standard
location.
Therefore, this would allow the generation of artifacts that install to
standard locations, such as Debian packages.
Otherwise, pressing the "arrow down" key would jump with the following
order:
Options -> Downloads -> Credits -> Quit
Instead of the expected order:
Options -> Credits -> Downloads -> Quit
When GfFileSetup is called on a fresh installation, none of the
destination directories might exist.
On the other hand, robustness has been slightly improved by adding calls
to good() and is_open().
Now that the game ships without any driver by default, it is very likely
that simplix.xml does not exist on fresh installations. In fact, the
game already did not consider this as an error, so this was a leftover.
Commit 744677c3a6f3e6c1c463fe55b7b5408355ffe89b from speed-dreams-data
replaced the definition for SD_DATADIR from an absolute path to a
relative path. This was done in order to allow a relative path to be
looked up first by GfApplication::parseOptions() (as required by Windows
and macOS builds), and then look SD_DATADIR_ABS if not found (as
required by in-tree builds).
Now that the project has been migrated from SVN to Git,
the complex logic to determine the project version is now no longer
needed, since Git can achieve the same effect with git-describe(1). [1]
TODO: CPack-related code should be also updated accordingly.
[1]: https://git-scm.com/docs/git-describe
CMake 3.0.2 was released over ten years ago. [1] It is therefore assumed
that more modern CMake versions are already widely available.
[1]: https://cmake.org/files/v3.0/
Since the migration from SVN to Git, the data/ directory was put into a
separate repository, so that the engine repository should never install
anything there.
Otherwise, if the speed-dreams-data package is not found, SD_DATADIR
would expand to "/", which is a valid directory that the game would
attempt to look up.
Otherwise, even if srcPath is empty, a trailing '/' would be appended to
tgtPath, and therefore it would not be possible to get an empty data
directory if SD_DATADIR is undefined or empty.
This command line tool was meant to generate a XML file (typically,
version.xml) containing the version numbers for a list of files defined
by the SD_INSTALL_FILES CMake macro. Then, the game would read this XML
file and copy files around if an update was needed.
Unfortunately, this introduced a circular dependency between the engine
and data repositories, as the engine repository would rely on the data
directory to know the file list, and the data repository would rely on
the xmlversion executable to be available, and therefore the engine
repository.
Ultimately, none of this was needed: it is much simpler to define a
static, line-separated list of files in the data repository, and then
let the game figure out the versioning by itself. This renders
xmlversion entirely redundant, and therefore breaks the circular
dependency. As a bonus, some overly complex CMake stuff could be
removed.
So far, the game assets were located in the same repository as the game
engine. Since data and engine are split into different repositories, now
this project requires users to assign the CMAKE_PREFIX_PATH variable [1]
to indicate the location, only in the case of non-standard locations.
[1]: https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html
Even if urbanski is a good example of a minimalistic implementation that
can be used for learning, it is far from a competitive driver and is
highly prone to crash in race, which would affect user experience
negatively.
Therefore, it is better to leave the source code available for reference
purposes, but do not include it into the build so that urbanski-drivers
cannot be selected.
Former-commit-id: 277281ef785291f0e7deb262e2c2c3b8f9cffc3b
Former-commit-id: efde653b918a8a4df65ac23b15025e4aeefc9275
These drivers are considered obsolete and were not even built any more.
Former-commit-id: 951cff0a690a7fe9320ed767863495266bac5159
Former-commit-id: 923e07a5ee892d5dab22593934c98958fdd63ed7
Having statically allocated buffers in this context was not only
unnecessary, but also dangerous because these strings would be shared
among all TDriver instances, even if they really should not, since every
TDriver instance belongs to a different driver, and therefore different
parameters.
Also, since racing lines are now dumped into JSON files, it makes sense
to reflect this into the file extension, too, so that text editors can
easily recognise the syntax.
Former-commit-id: 3421b724bfc040f288fe61ffc0fc78fe5a25cd4f
Former-commit-id: 0844542eecaa950c1f96a860e2fcd21d6807059a
Since oPathPoints is defined as a std::vector, dumping TPathPt instances
as Plain Old Data is not valid any more. In fact, C++ compilers would
already warn that offsetof(3) could not be safely used with TPathPt
members since it never was Plain Old Data, but this warning was
suppressed only because raw pointer manipulation had been used instead
of offsetof(3).
On the other hand, dumping binary data is inherently non-portable and
not human-readable, so this commit suggests to dump such data in JSON
format, as cJSON is already used by the project and XML is bad, among
many other things, to store arbitrarily large arrays.
Former-commit-id: 4a447adb452dd9ae85ca4cce9993cbe9ad0487f6
Former-commit-id: b462a614ed53f1938eadb4680a10ef57576b29d9
Otherwise, copying TLane objects using the default copy operation would
not be possible.
Former-commit-id: be7ac7e2191792ad8e43766ea39f745591f10916
Former-commit-id: 4d17b9524cd539c0dca0220108dea1d7a38e9f9b
- Replace some non-const-correct char * to std::string to avoid
potential dangling pointers and manual memory management.
- oCommonData was deemed redundant, so unitcommondata.{cpp,h} have been
removed.
- There was no need to define non-default destructors or operator= for
TCarParam.
- oSideScaleMu and oSideScaleBrake were always set to 0.95f instead of
0.97f by all categories, so assume these values as defaults and remove
both TDriver::ScaleSide and these variables altogether.
- Since robots now allocated driver data dynamically i.e., without
any arbitrary limits, oExtended was deemed redundant.
Former-commit-id: 6f64dba41e036e37345bfba1d2de75bdb347a976
Former-commit-id: bd10700dae55653ef15936f3613c942a8ec753a7
Similarly to other driver implementations, simplix relied on
arbitrarily-sized buffers to store driver data, instead of allocating it
dynamically.
Furthermore, simplix relied on having per-category copies of its shared
library (e.g.: simplix_ls1, simplix_sc) to perform per-category
initializations and store them into statically allocated variables.
This has been fixed so that per-category initializations are perfomed
from the driver side, which means that one shared library can be used
for all car categories.
Since drivers are now re-indexed on every call to GfDrivers::reload,
IndexOffset is no longer needed.
Former-commit-id: f621a13850e08c9f36c90286d6548ed0c117290b
Former-commit-id: 6d93fe0a4d4130712e08a1d75336b4286bcf3039
Most of dandroid's private parameters are shared among cars and even
entire categories, and only a small fraction of such parameters are ever
changed.
Therefore, this commit suggests sane defaults so as to remove all
redundant parameters in order to greatly simplify dandroid-based driver
parameters. Also, it adds the possibility to set per-category
parameters.
Former-commit-id: a052f11ff35809692afbc17c62c62efc65e00412
Former-commit-id: e98696da43da0967a8af167540da4733754f71ce
C++ requires members to be initialised in the same order as they are
listed on the class definition. Otherwise, some compilers might throw a
warning message.
Former-commit-id: 3e05446ec7f0924384c84fe521800bac7a685cfb
Former-commit-id: 51f964c03df3bc1fd5988db2a39acae7984e5531
So far, usr would crash the game if parameters were missing for a
specific car, track or weather code. Since dynamically generated
drivers introduce a combinatory explosion, it is no longer acceptable to
crash on missing parameters, so now sane defaults are assumed.
Former-commit-id: 7975c8252737cd565fad3a1abb8b8684f8628782
Former-commit-id: ed19385aa318ffd24e86b254ebe75aac45657540
Robot clones were shared library duplicates with a different name that
the game would rely on to perform different actions based on the car
category.
Not only this was a hacky solution, but it also involved around 50
extra libraries loaded into the game, which means higher resource
consumption and slower startup time, as well as making driver management
more difficult to the much higher of directories involved in
data/drivers/.
Now, only 1 shared library per robot is defined.
Former-commit-id: 4c5141000bc9b46363a16c0928e90b14f40a430a
Former-commit-id: 773f3d6987da3f6ef8e78e0f0276e2d4bf2b07f2