43 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!doctype html>
 | 
						|
<html>
 | 
						|
  <head>
 | 
						|
    <title>Townengine Wiki : About Townengine</title>
 | 
						|
    <link rel="stylesheet" href="style.css">
 | 
						|
  </head>
 | 
						|
  <body>
 | 
						|
    <h1 style="margin-bottom:0in;">1. About Townengine</h1>
 | 
						|
    <a href="index.html">Go back
 | 
						|
    <p><a name="introduction"></a><strong>1.1 </strong><strong>Introduction</strong>
 | 
						|
    <blockquote>
 | 
						|
      <p>Townengine, {twn}, is an opinionated game development framework designed around ideas of simplicity, managed state,
 | 
						|
         care for old devices, portability, language agnosticism, use-case orientation, iterability and low latency.
 | 
						|
      <p><b>Simplicity.</b> It makes assumptions that trickle down to your game code. There's no delta between frames, nor resolution change.
 | 
						|
         Textures have constant known size, not requiring scaling.
 | 
						|
      <p><b>Managed state.</b> Designed around this we can provide hot reloading at any point,
 | 
						|
         serialization for save files and debug dumps, as well as synchronization over network, without any user code.
 | 
						|
         Every frame apparent engine state is cleared, which removes another variable for you to handle, - when to initialize.
 | 
						|
      <p><b>Care for old devices.</b> It's to both to provide it for more people, who otherwise might not be able to make games they want,
 | 
						|
         as well as to have restrictions that constitute in desired aesthetic. Graphics capabilities are limited, but
 | 
						|
         what is present, - is heavily optimized. It is rather different from performance-driven approach that tries to take
 | 
						|
         advantage of the latest hardware and features, sacrificing both the reach and portability.
 | 
						|
      <p><b>Portability.</b> Written in C11 with all dependencies being in C, it's possible to compile it to most platforms.
 | 
						|
         SDL2 is at the center and you cannot get better than this. Default graphics API is OpenGL 1.5 with extension detection.
 | 
						|
         As an example, it builds and runs on Haiku OS with LLVMpipe.
 | 
						|
      <p><b>Language agnosticism.</b> API is restricted to not require much glue.
 | 
						|
         Language interpreters don't need to be part of the engine itself. Anything with C ABI support can link to it.
 | 
						|
      <p><b>Use-case orientation.</b> It doesn't try to be a yet another general purpose engine conquering all and nothing.
 | 
						|
         Instead we seek particular use cases and implement the most essential parts.
 | 
						|
      <p><b>Iterability.</b> Defaults provided for most of the API, making initial code faster to spring.
 | 
						|
         Hot reloading for both assets and code.
 | 
						|
      <p><b>Low latency.</b> Care is given to various incarnations of feared latency. Engine is fast to build, allowing for low commitment patches.
 | 
						|
         Startup time is profiled and optimized. Streaming is used as much as possible for asset load.
 | 
						|
    </blockquote>
 | 
						|
    <p><a name="wiki"></a><strong>1.2 </strong><strong>Wiki</strong>
 | 
						|
    <blockquote>
 | 
						|
      <p>Purpose of this wiki is to collect information on various usages of {twn} across the genres, FAQ style.
 | 
						|
         You're welcomed to contribute to it. It's written in HTML so basic you can edit it by hand.
 | 
						|
         Look for `index.html` and `template.html` files for more.
 | 
						|
    </blockquote>
 | 
						|
  </body>
 | 
						|
</html>
 |