aboutsummaryrefslogtreecommitdiffstats
path: root/md_README.html
blob: d74d4407a5a0ebb35ed60c5ee399ab64f69476c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>README</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="yage.png"/></td>
    <td style="padding-left: 0.5em;">
    <div id="projectbrief">Yet Another Game Engine</div>
    </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">README </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><div class="image">
<img src="/docs/yage.png"  alt="yage-logo" title="YAGE"/>
</div>
<div class="image">
<img src="https://travis-ci.org/ymherklotz/YAGE.svg?branch=master"  alt="master-build" title="Build Status"/>
</div>
<h2>Introduction</h2>
<p>YAGE stands for Yet Another Game Engine. It is a 2D game engine that is being developed for the game <a href="https://github.com/ymherklotz/Arider" title="Arider">Arider</a>. However, it will also be general game engine library for any other 2D games.</p>
<p>YAGE uses OpenGL for rendering of 2D graphics. OpenGL was chosen because it is the most crossplatform Graphics API, and not as low level as Vulkan.</p>
<p>Yage uses GLFW for the creation and viewport as it is lightweight and easy to manage. However, these features are completely wrapped behind the YAGE API.</p>
<p>The inspiration for this game engine is to learn about OpenGL and create an optimised 2D game engine with a simple API that can be used to easily create simple 2D games. To do this, a Component Entity System will be used to manage the different systems in the game engine and make it as modular as possible. Systems can easily be added to the game engine, and new entities with custom Components can also be created by the user.</p>
<p>The game engine also supports asynchronous logging by using an <code>Active</code> class that creates a new thread, and queues any functions that are sent to it. This can help debugging programs, as one can increase the minimum log level of the game engine to any required resolution. This output can also be piped to a file without slowing down the program.</p>
<p>The full documentation of the API can be seen <a href="https://www.yannherklotz.com/YAGE">here</a>.</p>
<h3>Purpose</h3>
<p>The purpose of this game engine is not to be very general, but easy to use and quick to initially set up.</p>
<h2>Installation and usage</h2>
<p>To use YAGE for your own game, you should link it as a static library and include the <a href="/yage/yage.h">yage.h</a> header in your project. To link the project using cmake, the library has to be added as a subdirectory and then linked with the name <code>yage</code>.</p>
<h2>Build and Testing</h2>
<p>To compile YAGE, create a build directory from the base directory. Then call cmake and point it to the directory containing. <a href="/CMakeLists.txt">CMakeLists.txt</a>. For example, one can use the following commands to build the library and run tests on it.</p>
<p>``` shell mkdir -p build cd build cmake .. ```</p>
<p>The test suite can then be run using</p>
<p>``` shell cd build/tests &amp;&amp; ctest ```</p>
<h2>Using the game engine</h2>
<p>The game engine can be initialised as follows.</p>
<p>``` c++ <a class="el" href="namespaceyage.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce" title="Initializes YAGE. ">yage::init()</a>; ```</p>
<p>It can be then cleaned up by running.</p>
<p>``` c++ <a class="el" href="namespaceyage.html#ac9d8c7327204686b3c86f4ab48672618" title="Quit and cleanup YAGE. ">yage::quit()</a>; ```</p>
<h2>Future Improvements</h2>
<p>The first step is to have full support of 3D meshes with their corresponding textures, and making a useful API to interact with the 3D YAGE library.</p>
<p>Secondly, improvements to the Entity Component System</p>
<h2>License</h2>
<p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> &ndash; MIT License, see file <a href="/LICENSE">LICENSE</a> for more details. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Jun 23 2018 15:09:53 by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>