annotate doxygen/page-faq.c @ 217:836bac1419c7

examples: improve map example
author David Demelier <markand@malikania.fr>
date Wed, 18 Nov 2020 10:13:29 +0100
parents 852d0b7817ce
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
77
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /**
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * \page faq FAQ
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 * \tableofcontents
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 * # Why not creating a game engine?
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * Game engines are usually too generic, too complex and do too much things.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * Lots of them also use scripting language which require another learning curve
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 * to be used.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * Molko's Adventure is a solo tactical 2D RPG and its core is especially
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * designed for that gameplay. Thus the code stay simple to understand and to
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * follow. Coupling a general purpose game engine with a game design is
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * sometimes more complicated than writing small code.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * However, game engines are still interesting for people who already know how
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 * to use them and feel confident with them.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
18 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 * # Why no prefix like "ma_" or "MA_"?
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 * See also question above.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 * The purpose of Molko's Adventure is not to provide a drop-in reusable library
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 * to create RPG games. It is highly coupled with the gameplay of the original
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 * game. Thus we wanted to keep the codebase extremely simple and minimalist
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 * without adding bunch of genericity.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 * The core API isn't meant to be installed system wide (possible, but not
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 * recommended), instead users are encouraged to copy the core code and to adapt
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 * to their gameplay.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 * A simple example: if someone wants to create a game and would like to allow
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 * only three playable entities at a time, it should simply edit appropriates
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 * structures and everything is adapted. Then, structures and array can stay
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 * static without dynamic allocations.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 * # Why C instead of <FOO>?
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 * C is an awesome language. It still has its place in the industry especially
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 * in low-level, kernel and game design.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 * Games are usually designed without OO in mind using simple procedural codes
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 * and lots of data. In C, writing code makes easier to understand what's
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 * happening under the hood without having to check if functions will generate
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 * dynamic allocations or not.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 *
169
eb0a7ab71023 misc: extreme cleanup, closes #2506
David Demelier <markand@malikania.fr>
parents: 77
diff changeset
47 * However, we also love modernity and as such, C11 is the minimal requirement
77
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 * to build and run Molko's Adventure.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 * \note The code does not make any assumption about the platform it runs, it
169
eb0a7ab71023 misc: extreme cleanup, closes #2506
David Demelier <markand@malikania.fr>
parents: 77
diff changeset
51 * expects to have a fully conformant C11 implementation. Microsoft MSVC
77
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 * is known to **not** support this C version.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 * # Can I make a MMORPG with that?
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 * Not easily.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 * This core API is really tied to a unique solo RPG adventure and therefore it
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 * does not separate logic from rendering.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 * Also, note that creating a server-client game is really different in terms of
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 * architecture than a local solo game. Most of the logic part is done server
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 * side and requires much more code to analyze to avoid cheats, lag,
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 * synchronisation and many other stuff than a local game does not require.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 *
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 * There are no plans to create a network oriented core API anytime soon.
837ef1d387b4 doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 */