Project

General

Profile

Programmers Guide » History » Version 10

Jordi Rovira, 11/24/2016 10:19 AM

1 4 Jordi Rovira
<h1>Programming Guide</h1>
2 2 Jordi Rovira
3 9 Jordi Rovira
<p>{{toc}}</p>
4 1 Jordi Rovira
5 7 Jordi Rovira
<h1>Architecture</h1>
6 4 Jordi Rovira
7 7 Jordi Rovira
<h2>Modules</h2>
8 4 Jordi Rovira
9 2 Jordi Rovira
<p>The system is structured as an Unreal plugin with two additional Unreal modules: one for the editor and one for the runtime. These modules use external libraries for the Mutable runtime, which is a standalonw library with no dependencies.</p>
10 1 Jordi Rovira
11 3 Jordi Rovira
<p><img alt="" data-rich-file-id="5" src="/system/rich/rich_files/rich_files/000/000/005/original/Mutable-Architecture-768x808.png" style="height: 606px; width: 576px;" /></p>
12 2 Jordi Rovira
13 7 Jordi Rovira
<h2>Folder Structure</h2>
14 2 Jordi Rovira
15 10 Jordi Rovira
<table border="0" cellpadding="0" cellspacing="0" style="width:100%;">
16 10 Jordi Rovira
	<tbody>
17 10 Jordi Rovira
		<tr>
18 10 Jordi Rovira
			<td style="width: 430px; height: 421px;"><img alt="" data-rich-file-id="4" src="/system/rich/rich_files/rich_files/000/000/004/original/Mutable-Unreal-Folder-Structure-1.png" style="width: 420px; height: 411px;" /></td>
19 10 Jordi Rovira
			<td style="vertical-align: top;">
20 10 Jordi Rovira
			<p>This is the basic folder structure of an Unreal Engine game that uses Mutable. The hierarchy only shows the relevant folders for Mutable source code.</p>
21 1 Jordi Rovira
22 10 Jordi Rovira
			<p>&nbsp;</p>
23 1 Jordi Rovira
24 10 Jordi Rovira
			<p>The folder &ldquo;source&rdquo; is optional and it contains the source code of the standalone runtime and tools libraries. These are already included in the &ldquo;lib&rdquo; folder as precompiled binaries for each supported platform, with the required headers in the &ldquo;include&rdquo; folder. For the debug version, symbol pdb files are also included.</p>
25 1 Jordi Rovira
26 10 Jordi Rovira
			<p>&nbsp;</p>
27 1 Jordi Rovira
28 10 Jordi Rovira
			<p>In case the source of the&nbsp;standalone libraries needs to be modified, a Visual Studio solution is included inside source-&gt;project-&gt;vs2015 to rebuild them. Both &ldquo;release&rdquo; and &ldquo;debug&rdquo; configurations should always be rebuilt to avoid desynchronising the binaries. After that the libraries and include files need to be updated using the script &ldquo;DeployFromSource.bat&rdquo; in the mutable folder.</p>
29 10 Jordi Rovira
30 10 Jordi Rovira
			<p>&nbsp;</p>
31 10 Jordi Rovira
32 10 Jordi Rovira
			<p>The &ldquo;source&rdquo; folder may also contain the source code for the standalone tools for Mutable. These tools are not required for normal Mutable usage but they can be very helpful to&nbsp;debug and profile your project.</p>
33 10 Jordi Rovira
			</td>
34 10 Jordi Rovira
		</tr>
35 10 Jordi Rovira
	</tbody>
36 10 Jordi Rovira
</table>
37 2 Jordi Rovira
38 7 Jordi Rovira
<h2>Internal Design</h2>
39 2 Jordi Rovira
40 2 Jordi Rovira
<p>Mutable is designed around the concept of virtual machine. Customizable objects are decomposed in series of intructions that are optimised to build the instances on different situations. These instructions operate on mesh fragments, images and colours and they transform them by merging, blending, packaging texture coordinates etc.</p>
41 2 Jordi Rovira
42 2 Jordi Rovira
<p>The system relies heavily in a pre-process of the object graph that generates code for a virtual machine whose operations involve mesh fragments, images, etc. This object-construction code is then optimised for every use case of the model so that the optimal process to construct an instance is found.</p>
43 1 Jordi Rovira
44 1 Jordi Rovira
<p><img alt="" data-rich-file-id="6" src="/system/rich/rich_files/rich_files/000/000/006/original/img_56f55d6a9b7b6.png" /></p>
45 1 Jordi Rovira
46 1 Jordi Rovira
<p>Mutable standalone model debugger and profiler showing the virtual machine code, the set of constant data (image blocks and mesh fragments), a preview object and texture layout and a simulation of the parallel construction of a model with its memory usage.</p>
47 7 Jordi Rovira
48 7 Jordi Rovira
<h1>Using customizable objects in game</h1>
49 7 Jordi Rovira
50 7 Jordi Rovira
<h1>Resource management</h1>