<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://olddev.minetest.org/index.php?action=history&amp;feed=atom&amp;title=Engine%2FStructure%2Fja</id>
	<title>Engine/Structure/ja - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://olddev.minetest.org/index.php?action=history&amp;feed=atom&amp;title=Engine%2FStructure%2Fja"/>
	<link rel="alternate" type="text/html" href="https://olddev.minetest.org/index.php?title=Engine/Structure/ja&amp;action=history"/>
	<updated>2026-05-06T23:52:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.38.7</generator>
	<entry>
		<id>https://olddev.minetest.org/index.php?title=Engine/Structure/ja&amp;diff=30&amp;oldid=prev</id>
		<title>&gt;Rubenwardy: Rubenwardy moved page Engine structure/ja to Engine/Structure/ja</title>
		<link rel="alternate" type="text/html" href="https://olddev.minetest.org/index.php?title=Engine/Structure/ja&amp;diff=30&amp;oldid=prev"/>
		<updated>2020-06-18T19:29:26Z</updated>

		<summary type="html">&lt;p&gt;Rubenwardy moved page &lt;a href=&quot;/Engine_structure/ja&quot; class=&quot;mw-redirect&quot; title=&quot;Engine structure/ja&quot;&gt;Engine structure/ja&lt;/a&gt; to &lt;a href=&quot;/Engine/Structure/ja&quot; title=&quot;Engine/Structure/ja&quot;&gt;Engine/Structure/ja&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[File:minetest-0.3-dfd-visio.png|500px|thumb|right|バージョン0.3のデータフロー図 - 現在もほとんどが正確です。]]&lt;br /&gt;
== 全体の構造 ==&lt;br /&gt;
&lt;br /&gt;
Minetestは常に、サーバーと0個以上の接続されているクライアントとして動作します。&lt;br /&gt;
&lt;br /&gt;
== 関数 ==&lt;br /&gt;
&lt;br /&gt;
=== main() ===&lt;br /&gt;
main.cpp&lt;br /&gt;
&lt;br /&gt;
Minetestが起動すると、まずmain.cpp内のmain()関数が実行されます。これは全てのコマンドライン引数(サーバーとクライアント)、起動、メインメニュー(クライアント)の結果を処理します。&lt;br /&gt;
&lt;br /&gt;
=== dedicated_server_loop() ===&lt;br /&gt;
server.{h,cpp}&lt;br /&gt;
&lt;br /&gt;
When the dedicated server is run, main() ends up running this and when it returns, Minetest quits.&lt;br /&gt;
&lt;br /&gt;
It basically just feeds time to the server instance created by main() and reacts to SIGKILL etc.&lt;br /&gt;
&lt;br /&gt;
=== the_game() ===&lt;br /&gt;
game.{h,cpp}&lt;br /&gt;
&lt;br /&gt;
Launched when you start the game from the main menu.&lt;br /&gt;
&lt;br /&gt;
This creates the client (and the server, if needed), handles the waiting of loading stuff from the server, and runs the game in a somewhat badly structured main loop (which works well, though).&lt;br /&gt;
&lt;br /&gt;
== Threads ==&lt;br /&gt;
&lt;br /&gt;
=== Stand-alone server ===&lt;br /&gt;
* main&lt;br /&gt;
:* Doesn't do much&lt;br /&gt;
* ServerThread (Server)&lt;br /&gt;
:* Runs the server&lt;br /&gt;
* EmergeThread (Server)&lt;br /&gt;
:* Fetches and generates world&lt;br /&gt;
&lt;br /&gt;
=== Client-only ===&lt;br /&gt;
* main&lt;br /&gt;
:* Runs almost everything in main game loop&lt;br /&gt;
* MeshUpdateThread (Client)&lt;br /&gt;
:* Does mesh updates in the background&lt;br /&gt;
&lt;br /&gt;
=== Singleplayer ===&lt;br /&gt;
* main&lt;br /&gt;
:* Runs almost everything except server in main game loop&lt;br /&gt;
* MeshUpdateThread (Client)&lt;br /&gt;
:* Does mesh updates in the background&lt;br /&gt;
* ServerThread (Server)&lt;br /&gt;
:* Runs the server&lt;br /&gt;
* EmergeThread (Server)&lt;br /&gt;
:* Fetches and generates world&lt;br /&gt;
&lt;br /&gt;
== Classes ==&lt;br /&gt;
&lt;br /&gt;
=== IGameDef ===&lt;br /&gt;
An interface for fetching pointers to the managers of things. It is passed to almost everything.&lt;br /&gt;
&lt;br /&gt;
It is implemented by Client and Server. Neither implements all interfaces.&lt;br /&gt;
&lt;br /&gt;
Generally these can be accessed by referring to IGameDef:&lt;br /&gt;
* TextureSource&lt;br /&gt;
* ItemDefManager&lt;br /&gt;
* NodeDefManager&lt;br /&gt;
* SoundManager&lt;br /&gt;
* MtEventManager&lt;br /&gt;
&lt;br /&gt;
This is the main difference between 0.3 and 0.4. In 0.3 this does not exist, because all content is defined in static tables in source code.&lt;br /&gt;
&lt;br /&gt;
gamedef.{h,cpp}&lt;br /&gt;
&lt;br /&gt;
=== TextureSource ===&lt;br /&gt;
Fetches, generates and caches textures.&lt;br /&gt;
&lt;br /&gt;
tile.{h,cpp}&lt;br /&gt;
&lt;br /&gt;
=== ItemDefManager ===&lt;br /&gt;
Stores the definitions of items, by item name. Content is set up at server startup, and transferred from server to client at beginning of connection.&lt;br /&gt;
&lt;br /&gt;
itemdef.{h,cpp}&lt;br /&gt;
&lt;br /&gt;
=== NodeDefManager ===&lt;br /&gt;
Stores the definitions of nodes and the mapping between node ids and names. Content is set up at server startup, and transferred from server to client at beginning of connection.&lt;br /&gt;
&lt;br /&gt;
nodedef.{h,cpp}&lt;br /&gt;
&lt;br /&gt;
=== SoundManager ===&lt;br /&gt;
Stores and plays sounds on the client.&lt;br /&gt;
&lt;br /&gt;
sound.{h,cpp}; sound_openal.{h,cpp}&lt;br /&gt;
&lt;br /&gt;
=== MtEventManager ===&lt;br /&gt;
A minimal event manager currently only used for triggering sounds on the client.&lt;br /&gt;
&lt;br /&gt;
event.{h,cpp}&lt;br /&gt;
&lt;br /&gt;
=== Client ===&lt;br /&gt;
Contains a lot of stuff. Most considerable members are listed here.&lt;br /&gt;
* TextureSource&lt;br /&gt;
* ItemDefManager&lt;br /&gt;
* NodeDefManager&lt;br /&gt;
* SoundManager&lt;br /&gt;
* MtEventManager&lt;br /&gt;
* MeshUpdateThread&lt;br /&gt;
* ClientEnvironment&lt;br /&gt;
:* ClientMap&lt;br /&gt;
:* Players&lt;br /&gt;
:* ClientActiveObjects (CAOs)&lt;br /&gt;
* Connection&lt;br /&gt;
&lt;br /&gt;
Implements IGameDef.&lt;br /&gt;
&lt;br /&gt;
client.{h,cpp}&lt;br /&gt;
&lt;br /&gt;
=== Server ===&lt;br /&gt;
Contains a lot of stuff. Most considerable members are listed here.&lt;br /&gt;
* ServerEnvironment &lt;br /&gt;
:* ServerMap&lt;br /&gt;
:* Players&lt;br /&gt;
:* ServerActiveObjects (SAOs)&lt;br /&gt;
* Connection&lt;br /&gt;
* BanManager&lt;br /&gt;
* Lua State&lt;br /&gt;
* ItemDefManager&lt;br /&gt;
* NodeDefManager&lt;br /&gt;
* CraftDefManager&lt;br /&gt;
* ServerThread&lt;br /&gt;
* EmergeThread&lt;br /&gt;
&lt;br /&gt;
Implements IGameDef.&lt;br /&gt;
&lt;br /&gt;
server.{h,cpp}&lt;br /&gt;
&lt;br /&gt;
=== [[Script Engine]] ===&lt;br /&gt;
script/*&lt;br /&gt;
&lt;br /&gt;
The script engine contains &amp;quot;core to script&amp;quot;- as well as &amp;quot;script to core&amp;quot;-interface implementation.&lt;br /&gt;
&lt;br /&gt;
=== Connection ===&lt;br /&gt;
Connection (client-&amp;gt;server or server-&amp;gt;clients)&lt;br /&gt;
&lt;br /&gt;
=== ClientEnvironment (Environment) ===&lt;br /&gt;
Contains most of the actual game environment (players, objects, map...)&lt;br /&gt;
&lt;br /&gt;
* ClientMap&lt;br /&gt;
* Players&lt;br /&gt;
* ClientActiveObjects (CAOs)&lt;br /&gt;
&lt;br /&gt;
environment.{h,cpp}&lt;br /&gt;
&lt;br /&gt;
=== ServerEnvironment (Environment) ===&lt;br /&gt;
Contains the actual game environment (players, objects, map, time of day, ...)&lt;br /&gt;
&lt;br /&gt;
* ServerMap&lt;br /&gt;
* Players&lt;br /&gt;
* ServerActiveObjects (SAOs)&lt;br /&gt;
&lt;br /&gt;
environment.{h,cpp}&lt;br /&gt;
&lt;br /&gt;
=== ClientMap (Map) ===&lt;br /&gt;
&lt;br /&gt;
map.{h,cpp}, clientmap.{h,cpp}&lt;br /&gt;
&lt;br /&gt;
=== ServerMap (マップ) ===&lt;br /&gt;
&lt;br /&gt;
map.{h,cpp}&lt;br /&gt;
[[Category:Core Engine]]&lt;/div&gt;</summary>
		<author><name>&gt;Rubenwardy</name></author>
	</entry>
</feed>