Creating Games: Add chapter
This commit is contained in:
parent
8be8e8627d
commit
dd4d0ddbb1
93
_en/games/games.md
Normal file
93
_en/games/games.md
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
---
|
||||||
|
title: Creating Games
|
||||||
|
layout: default
|
||||||
|
root: ../..
|
||||||
|
idx: 6.1
|
||||||
|
---
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
The power of Minetest is the ability to easily create games without the need
|
||||||
|
to write your own voxel graphics and algorithms or fancy networking.
|
||||||
|
|
||||||
|
* [What is a Game?](#what-is-a-game)
|
||||||
|
* [Game Directory](#game-directory)
|
||||||
|
* [Inter-game Compatibility](#inter-game-compatibility)
|
||||||
|
* [API Compatibility](#api-compatibility)
|
||||||
|
* [Groups and Aliases](#groups-and-aliases)
|
||||||
|
* [Your Turn](#your-turn)
|
||||||
|
|
||||||
|
## What is a Game?
|
||||||
|
|
||||||
|
Games are a collection of mods which work together to make a cohesive game.
|
||||||
|
A good game has a consistent underlying theme and a direction, for example
|
||||||
|
maybe it's a classic crafter miner with hard survival elements, or maybe
|
||||||
|
it's a space simulation game with a steam punk automation ascetic.
|
||||||
|
|
||||||
|
Game design is a complex topic, and is actually a whole field of expertise.
|
||||||
|
It's beyond the scope of the book to more than briefly touch on it.
|
||||||
|
|
||||||
|
## Game Directory
|
||||||
|
|
||||||
|
The structure and location of a game will seem rather familiar after working
|
||||||
|
with mods.
|
||||||
|
Games are found in a game location such as `minetest/games/<foo_game>`.
|
||||||
|
|
||||||
|
foo_game
|
||||||
|
├── game.conf
|
||||||
|
├── menu
|
||||||
|
│ ├── header.png
|
||||||
|
│ ├── background.png
|
||||||
|
│ └── icon.png
|
||||||
|
├── minetest.conf
|
||||||
|
├── mods
|
||||||
|
│ └── ... mods
|
||||||
|
├── README.txt
|
||||||
|
└── settingtypes.txt
|
||||||
|
|
||||||
|
The only thing that is required is a mods folder, but `game.conf` and `menu/icon.png`
|
||||||
|
are recommended.
|
||||||
|
|
||||||
|
## Inter-game Compatibility
|
||||||
|
|
||||||
|
### API Compatibility
|
||||||
|
|
||||||
|
It's a good idea to try to keep as much API compatibility with Minetest Game as
|
||||||
|
convenient, as it'll make porting mods to another game much easier.
|
||||||
|
|
||||||
|
API compatibility is the sum of the following things:
|
||||||
|
|
||||||
|
* Lua API table - All documented/advertised functions in the global table which shares the same name.
|
||||||
|
For example, `mobs.register_mob`.
|
||||||
|
* Registered Nodes/Items - The presence of items.
|
||||||
|
|
||||||
|
It's probably fine to have partial breakages as long as 90% of dependency
|
||||||
|
usecases still works. For example, not having a random utility function that was
|
||||||
|
only actually used internally is ok, but not having `mobs.register_mobs` is bad.
|
||||||
|
|
||||||
|
The best way to keep compatibility with another game is to keep API compatibility
|
||||||
|
with any mods which have the same name.
|
||||||
|
That is, if a mod uses the same name as another mod even if third party,
|
||||||
|
then it should have a compatible API.
|
||||||
|
For example, if a game includes a mod called `doors` then it should have the
|
||||||
|
same API as `doors` in Minetest Game.
|
||||||
|
|
||||||
|
It's difficult to maintain API compatibility with a disgusting God mega-mod like
|
||||||
|
*default* in Minetest Game, in which case the game shouldn't include a mod named
|
||||||
|
default.
|
||||||
|
|
||||||
|
API compatibility also applies to other third-party mods and games,
|
||||||
|
so try to make sure that any new mods have a unique mod name.
|
||||||
|
To check whether a mod name has been taken, search for it on
|
||||||
|
[content.minetest.net](https://content.minetest.net/).
|
||||||
|
|
||||||
|
### Groups and Aliases
|
||||||
|
|
||||||
|
Groups and Aliases are both massive tools in keeping compatibility between games,
|
||||||
|
as it allows item names to be different between different games. Common nodes
|
||||||
|
like stone and wood should have groups to indicate the material. It's also a
|
||||||
|
good idea to provide aliases from default nodes to any direct replacements.
|
||||||
|
|
||||||
|
## Your Turn
|
||||||
|
|
||||||
|
* Make a game - It can be simple, if you like.
|
@ -2,7 +2,7 @@
|
|||||||
title: Intro to Clean Architectures
|
title: Intro to Clean Architectures
|
||||||
layout: default
|
layout: default
|
||||||
root: ../..
|
root: ../..
|
||||||
idx: 6.3
|
idx: 7.3
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
title: Common Mistakes
|
title: Common Mistakes
|
||||||
layout: default
|
layout: default
|
||||||
root: ../..
|
root: ../..
|
||||||
idx: 6.1
|
idx: 7.1
|
||||||
redirect_from: /en/chapters/common_mistakes.html
|
redirect_from: /en/chapters/common_mistakes.html
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
title: Automatic Error Checking
|
title: Automatic Error Checking
|
||||||
layout: default
|
layout: default
|
||||||
root: ../..
|
root: ../..
|
||||||
idx: 6.2
|
idx: 7.2
|
||||||
description: Use LuaCheck to find errors
|
description: Use LuaCheck to find errors
|
||||||
redirect_from: /en/chapters/luacheck.html
|
redirect_from: /en/chapters/luacheck.html
|
||||||
---
|
---
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
title: Read More
|
title: Read More
|
||||||
layout: default
|
layout: default
|
||||||
root: ../..
|
root: ../..
|
||||||
idx: 6.6
|
idx: 7.6
|
||||||
redirect_from: /en/chapters/readmore.html
|
redirect_from: /en/chapters/readmore.html
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
title: Releasing a Mod
|
title: Releasing a Mod
|
||||||
layout: default
|
layout: default
|
||||||
root: ../..
|
root: ../..
|
||||||
idx: 6.5
|
idx: 7.5
|
||||||
redirect_from: /en/chapters/releasing.html
|
redirect_from: /en/chapters/releasing.html
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
title: Security
|
title: Security
|
||||||
layout: default
|
layout: default
|
||||||
root: ../..
|
root: ../..
|
||||||
idx: 6.25
|
idx: 7.25
|
||||||
description: Use LuaCheck to find errors
|
description: Use LuaCheck to find errors
|
||||||
redirect_from: /en/chapters/luacheck.html
|
redirect_from: /en/chapters/luacheck.html
|
||||||
---
|
---
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
title: Automatic Unit Testing
|
title: Automatic Unit Testing
|
||||||
layout: default
|
layout: default
|
||||||
root: ../..
|
root: ../..
|
||||||
idx: 6.4
|
idx: 7.4
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
Loading…
Reference in New Issue
Block a user