Mercurial > molko
annotate doc/docs/dev/faq.md @ 366:19782ea1cf4a
misc: start rebranding
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 24 Oct 2021 15:57:42 +0200 |
parents | 97f55f6b9593 |
children |
rev | line source |
---|---|
239
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 # FAQ |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 Frequently asked questions about the development. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 ## Why not creating a game engine? |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 Game engines are usually too generic, too complex and do too much things. Lots |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 of them also use scripting language which require another learning curve to be |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 used. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
245
diff
changeset
|
11 Molko's Engine is a solo tactical 2D RPG and its core is especially designed for |
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
245
diff
changeset
|
12 that gameplay. Thus the code stay simple to understand and to follow. Coupling |
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
245
diff
changeset
|
13 a general purpose game engine with a game design is sometimes more complicated |
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
245
diff
changeset
|
14 than writing small code. |
239
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 However, game engines are still interesting for people who already know how to |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 use them and feel confident with them. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 ## Why no prefix like "ma_" or "MA_"? |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 See also question above. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
245
diff
changeset
|
23 The purpose of Molko's Engine is not to provide a drop-in reusable library |
239
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 to create RPG games. It is highly coupled with the gameplay of the original |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 game. Thus we wanted to keep the codebase extremely simple and minimalist |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 without adding bunch of generics. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 The core API isn't meant to be installed system wide (possible, but not |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 recommended), instead users are encouraged to copy the core code and to adapt |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 to their gameplay. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 A simple example: if someone wants to create a game and would like to allow |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 only three playable entities at a time, it should simply edit appropriates |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 structures and everything is adapted. Then, structures and array can stay |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 static without dynamic allocations. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 Also, having a large amount of different data types, this would generate very |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 large function and type names. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 |
245
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
40 But if there is a high demand of having a proper independant library, it may |
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
41 change in the future. |
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
42 |
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
43 ## Why C? |
239
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 C is an awesome language. It still has its place in the industry especially in |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 low-level, kernel and game design. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 Games are usually designed without OO in mind using simple procedural codes and |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 lots of data. In C, writing code makes easier to understand what's happening |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 under the hood without having to check if functions will generate dynamic |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 allocations or not. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 However, we also love modernity and as such, C11 is the minimal requirement to |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
245
diff
changeset
|
54 build and run Molko's Engine. |
239
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 ## Can I make a MMORPG with that? |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 Not easily. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 This core API is really tied to a unique solo RPG adventure and therefore it |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 does not separate logic from rendering. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 Also, note that creating a server-client game is really different in terms of |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 architecture than a local solo game. Most of the logic part is done server side |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 and requires much more code to analyze to avoid cheats, lag, synchronisation and |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 many other stuff than a local game does not require. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 There are no plans to create a network oriented core API anytime soon. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 |
245
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
70 ## What are these strange symbols `(+-*&?)` in member fields? |
239
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 It's a custom notation to indicate ownership and user access. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 See [ownership](ownership.md) file for more information. |
245
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
75 |
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
76 ## Why not using RPG Maker instead? |
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
77 |
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
78 RPG Maker is an indeed great piece of software, in fact it's even the original |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
245
diff
changeset
|
79 source of inspiration for writing Molko's Engine. |
245
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
80 |
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
81 However RPG Maker (in every versions) suffer from: |
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
82 |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
245
diff
changeset
|
83 - Not opensource. RPG Maker is proprietary while Molko's Engine is licensed |
245
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
84 under the very liberal [ISC][] license. |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
245
diff
changeset
|
85 - Per cell movements while Molko's Engine provides per pixel granularity. |
245
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
86 This provides more interesting gameplay especially in dungeons. |
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
87 - Flexibility. Even though some RPG Maker variants provide Ruby programming, |
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
88 it's still based on GUI to design the game making less possibilities. Molko's |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
245
diff
changeset
|
89 Engine API is a pure C library where you can do mostly what you want. |
245
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
90 |
97f55f6b9593
doc: add CMake macros documentation
David Demelier <markand@malikania.fr>
parents:
239
diff
changeset
|
91 [ISC]: https://opensource.org/licenses/ISC |