<?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%2FObjects</id>
	<title>Engine/Objects - 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%2FObjects"/>
	<link rel="alternate" type="text/html" href="https://olddev.minetest.org/index.php?title=Engine/Objects&amp;action=history"/>
	<updated>2026-04-14T23:55:49Z</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/Objects&amp;diff=27&amp;oldid=prev</id>
		<title>&gt;Wuzzy: Remove links to pages proposed to deletion</title>
		<link rel="alternate" type="text/html" href="https://olddev.minetest.org/index.php?title=Engine/Objects&amp;diff=27&amp;oldid=prev"/>
		<updated>2022-05-24T10:27:29Z</updated>

		<summary type="html">&lt;p&gt;Remove links to pages proposed to deletion&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In Minetest, an object is a moving thing in the world. The two types of objects are players and entities.&lt;br /&gt;
&lt;br /&gt;
A static object is one that is saved in a mapblock, and an active object is one that is currently loaded and updating in the environment.&lt;br /&gt;
&lt;br /&gt;
== ActiveObjects ==&lt;br /&gt;
&lt;br /&gt;
ActiveObjects aka objects are objects in the environment, consisting of roughly everything that is not part of the voxel world (=Map).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
SAO = ServerActiveObject&lt;br /&gt;
CAO = ClientActiveObject&lt;br /&gt;
&lt;br /&gt;
serverobject.{h,cpp}&lt;br /&gt;
clientobject.{h,cpp}&lt;br /&gt;
content_sao.{h,cpp}&lt;br /&gt;
content_cao.{h,cpp}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All objects have a server- and a client-side counterpart. The&lt;br /&gt;
server-side object types that currently exist are&lt;br /&gt;
* TestSAO (a small test thing)&lt;br /&gt;
* ItemSAO (old item; not used)&lt;br /&gt;
* LuaEntitySAO (all entities defined in Lua; basically everything other than the players), and&lt;br /&gt;
* PlayerSAO (the player objects which enable standard object interaction for players. Players also have a ServerRemotePlayer or something like that which handles the things in which players are different to other objects).&lt;br /&gt;
&lt;br /&gt;
Client-side objects:&lt;br /&gt;
* TestCAO (obvious)&lt;br /&gt;
* ItemCAO (obvious)&lt;br /&gt;
* GenericCAO (everything else; LuaEntitySAOs and PlayerSAOs register as this on the client-side. This enables them to have the exact same capabilities in terms of looks, client-side interaction and stuff.)&lt;br /&gt;
&lt;br /&gt;
If eg. implementing meshes to go through the regular&lt;br /&gt;
Lua-&amp;gt;server-&amp;gt;client pipeline, one'll want to implement them in&lt;br /&gt;
GenericCAO, through ObjectProperties. ObjectProperties should contain&lt;br /&gt;
the filename of the mesh (which should be transferred like images),&lt;br /&gt;
and possibly some small additional information.&lt;br /&gt;
&lt;br /&gt;
All the players on the server have an associated PlayerSAO object, of which&lt;br /&gt;
generally all will appear on clients as GenericCAO client-side objects.&lt;br /&gt;
&lt;br /&gt;
The CAO of each player also exists on the player's clients itself,&lt;br /&gt;
just like the other players. It is always hidden and is used for&lt;br /&gt;
nothing. It doesn't cause any considerable overhead and filtering it&lt;br /&gt;
out server-side would make the systems messier. On a client, the local&lt;br /&gt;
player is a separate thing (a LocalPlayer, added to the environment in&lt;br /&gt;
Client::Client(); it is similar to the ServerRemotePlayers mentioned&lt;br /&gt;
earlier).&lt;br /&gt;
&lt;br /&gt;
[[Category:Core Engine]]&lt;br /&gt;
[[Category:Objects]]&lt;/div&gt;</summary>
		<author><name>&gt;Wuzzy</name></author>
	</entry>
</feed>