Ver código fonte

More organized readme

BearishSun 9 anos atrás
pai
commit
9d9b6d8e0e

+ 7 - 0
Documentation/GitHub/about.md

@@ -0,0 +1,7 @@
+# About
+
+Banshee was created and is developed by Marko Pintera. Its primary goal to provide an extremely intuitive interface for developing games, while having high quality graphics, with optimized and fast code. Another major goal is to design an engine that is truly extensible so others can easily learn and modify it, as well as use it as a basis for their own engines and other projects.
+
+This project was born as a dream to create a game engine on my own. I wanted primarily to learn about every aspect of engine development and to create a quality codebase I can use for my own game projects. Eventually it evolved into something bigger and I decided to share it with the world.
+
+I'm happy to connect with other developers, so feel free to contact me at [e-mail] (http://scr.im/39d1) or add me on [LinkedIn] (https://goo.gl/t6pPPs). 

+ 9 - 0
Documentation/GitHub/compiling.md

@@ -0,0 +1,9 @@
+# Compiling
+
+Banshee compiles on VS2015 - earlier versions might work with minor modifications. Other Windows compilers might work but have not been tested. Support for more platforms and compilers will become available with time.
+
+Aside from Banshee source code you will also need various third party dependencies. You may retrieve/compile those dependencies yourself by following a guide in "CompilingDependenciesManually.txt". If you are using VS2015 you can avoid compiling dependencies by downloading the archive below, containing a set of pre-compiled dependencies. These should be extracted in the root of the directory containing Banshee source code.
+
+The archive below also contains all non-code resources (images, shaders) required for the editor, engine and example projects.
+
+[Download dependencies (VS2015)] (http://bearishsun.thalassa.feralhosting.com/BansheeDependencies_VS2015_v0.2.0.zip) 

+ 7 - 0
Documentation/GitHub/documentation.md

@@ -0,0 +1,7 @@
+# Documentation
+
+Banshee comes with extensive documentation for both its native and managed code. On top of the API documentation that covers both engine internals and user-facing code, a variety of manuals are provided to get your started.
+
+Visit the documentation below:
+ - [Native] (http://bearishsun.thalassa.feralhosting.com/Docs/Native/index.html)
+ - [Managed] (http://bearishsun.thalassa.feralhosting.com/Docs/Managed/index.html)

+ 95 - 0
Documentation/GitHub/features.md

@@ -0,0 +1,95 @@
+# Features
+
+Here you will find a complete list of all currently available features. Banshee is current in development and more features are being added frequently.
+
+* Editor
+  * Asset management
+    * Simple drag and drop import
+	* Automatic reimport of externally modified assets
+	* Asset modifications immediately reflected in-game
+    * Version control friendly format
+  * Powerful object inspector
+    * Automatic GUI for script objects
+    * Exposes properties for artists/designers
+    * Customizable per-type
+  * Level creation
+    * Simple drag and drop interface
+	* Traditional set of tools
+    * Custom 2D and 3D tool support
+  * Prefab system
+    * Pre-built templates for level design
+	* Easy to create and maintain complex levels
+	* Hierarchical prefabs and instance specialization
+  * Play in editor
+    * Compile in editor
+    * Immediately test changes
+	* Pause and frame-step
+	* Analyze and modify scene while playing
+  * Fully extensible for game-specific needs
+    * Easy to extend using scripting
+    * Comprehensive extension scripting API
+	* Extend almost anything
+	  * Editor windows
+	  * Object inspectors
+	  * 2D/3D tools
+	  * Automate common tasks
+  * Game publishing
+    * One click build process
+	* Automatically detect required resources
+	* Automatically package and output an executable
+  * Customizable frontend
+    * Dockable layout and floating windows
+	* Custom skin & localization support
+   
+* Core
+  * Design
+    * Built using C++14 and modern design principles
+    * Clean layered design
+    * Fully documented
+    * Modular & plugin based
+	* Minimal third-party dependencies
+    * Multiplatform ready
+  * Renderer
+    * DX9, DX11 and OpenGL 4.3 render systems
+    * Multi-threaded rendering
+    * Flexible material system
+      * Easy to control and set up
+	  * BansheeFX language for material definitions
+      * Shader parsing for HLSL9, HLSL11 and GLSL
+  * Asset pipeline
+    * Easy to use
+    * Asynchronous resource loading
+    * Extensible importer system
+    * Available importer plugins for:
+      * FBX, OBJ, DAE meshes
+      * PNG, PSD, BMP, JPG, ... images
+      * OTF, TTF fonts
+      * HLSL9, HLSL11, GLSL shaders
+  * GUI system
+    * Unicode text rendering and input
+    * Easy to use layout based system
+    * Many common GUI controls
+    * Fully skinnable
+    * Automatic batching
+    * Support for texture atlases
+    * Localization
+  * Scripting
+    * C# 5.0
+	* Separate high level engine API
+	* Integrated runtime for maximum performance
+    * Full access to .NET framework
+	* Integration with Visual Studio
+	* Automatic serialization
+	  * Custom components
+	  * Custom resources
+	  * No additional code
+	  * Handles complex types and references
+  * Other
+    * CPU & GPU profiler
+    * Virtual input
+    * Advanced RTTI system
+    * Native object serialization
+    * Debug drawing
+	* Crash reporting
+    * Utility library
+      * Math, file system, events, thread pool, task scheduler, logging, memory allocators and more

+ 5 - 0
Documentation/GitHub/install.md

@@ -0,0 +1,5 @@
+# Install
+
+Banshee is still in development and does not yet come with a proper installer. You will need to extract the downloaded files manually. The platform support is currently limited to Windows only, but more platforms are coming in near future.
+
+[Download binaries (Windows x64)] (http://bearishsun.thalassa.feralhosting.com/Banshee_Win_x64_v0.2.0.zip)

+ 3 - 0
Documentation/GitHub/license.md

@@ -0,0 +1,3 @@
+# License #
+
+Banshee is offered completely free for personal or commercial use under the GNU Lesser General Public License v3 (LGPL v3). You will find the complete terms of the license in the License sub-directory (both GPL and LGPL documents combined form the license). Inside you will also find a list of all third-party licences used by Banshee.

+ 34 - 0
Documentation/GitHub/roadmap.md

@@ -0,0 +1,34 @@
+# Roadmap
+
+**Current version: v0.2**
+
+Banshee is currently in development, and the focus right now is to finish the most important high level systems so that people can start using it to create games as soon as possible. These systems are:
+ - Physics (colliders, triggers, rigidbodies, joints, character controller)
+ - Animation (skeletal, blend shapes, generic script variables)
+ - Audio (popular file format support, music, 3D audio)
+ 
+The plan is to finish these roughly around mid-2016.
+
+Quickly to follow will be:
+ - Ports for Linux & Mac
+ - Vulkan (and possibly DX12) implementation
+ - Physically based renderer
+ - Website for the community
+ 
+These are planned for an early 2017 release.
+
+There are many more features planned, but these are without a specific timeline or order:
+ - Mobile render API (likely Vulkan, possibly Metal for iOS)
+ - Android/iOS/WP ports
+ - High level networking (replication, RPCs)
+ - Global illumination (+ other fancy graphics)
+ - Occlussion culling
+ - Terrain
+ - Effects/Particle editor
+ - AI support
+ - Cinematics editor
+ - Higher level resource streaming support (including level and texture streaming)
+ - Unified shading language (with exposed hooks for visual shader node editor)
+ - Much more...
+ 
+A very rough estimate is about two months each for every one of these features. If community joins in this could go a lot faster. Or if someone ends up funding Banshee development we could speed this up by hiring another developer or two.

+ 9 - 275
README.md

@@ -10,278 +10,12 @@ For engine developers it aims to provide a high quality foundation to build and
 
 [Editor video overview] (https://youtu.be/WJsYOyCXGEU)
 
-## Features (currently available)
-
-* Editor
-  * Asset management
-    * Simple drag and drop import
-	* Automatic reimport of externally modified assets
-	* Asset modifications immediately reflected in-game
-    * Version control friendly format
-  * Powerful object inspector
-    * Automatic GUI for script objects
-    * Exposes properties for artists/designers
-    * Customizable per-type
-  * Level creation
-    * Simple drag and drop interface
-	* Traditional set of tools
-    * Custom 2D and 3D tool support
-  * Prefab system
-    * Pre-built templates for level design
-	* Easy to create and maintain complex levels
-	* Hierarchical prefabs and instance specialization
-  * Play in editor
-    * Compile in editor
-    * Immediately test changes
-	* Pause and frame-step
-	* Analyze and modify scene while playing
-  * Fully extensible for game-specific needs
-    * Easy to extend using scripting
-    * Comprehensive extension scripting API
-	* Extend almost anything
-	  * Editor windows
-	  * Object inspectors
-	  * 2D/3D tools
-	  * Automate common tasks
-  * Game publishing
-    * One click build process
-	* Automatically detect required resources
-	* Automatically package and output an executable
-  * Customizable frontend
-    * Dockable layout and floating windows
-	* Custom skin & localization support
-   
-* Core
-  * Design
-    * Built using C++14 and modern design principles
-    * Clean layered design
-    * Fully documented
-    * Modular & plugin based
-	* Minimal third-party dependencies
-    * Multiplatform ready
-  * Renderer
-    * DX9, DX11 and OpenGL 4.3 render systems
-    * Multi-threaded rendering
-    * Flexible material system
-      * Easy to control and set up
-	  * BansheeFX language for material definitions
-      * Shader parsing for HLSL9, HLSL11 and GLSL
-  * Asset pipeline
-    * Easy to use
-    * Asynchronous resource loading
-    * Extensible importer system
-    * Available importer plugins for:
-      * FBX, OBJ, DAE meshes
-      * PNG, PSD, BMP, JPG, ... images
-      * OTF, TTF fonts
-      * HLSL9, HLSL11, GLSL shaders
-  * GUI system
-    * Unicode text rendering and input
-    * Easy to use layout based system
-    * Many common GUI controls
-    * Fully skinnable
-    * Automatic batching
-    * Support for texture atlases
-    * Localization
-  * Scripting
-    * C# 5.0
-	* Separate high level engine API
-	* Integrated runtime for maximum performance
-    * Full access to .NET framework
-	* Integration with Visual Studio
-	* Automatic serialization
-	  * Custom components
-	  * Custom resources
-	  * No additional code
-	  * Handles complex types and references
-  * Other
-    * CPU & GPU profiler
-    * Virtual input
-    * Advanced RTTI system
-    * Native object serialization
-    * Debug drawing
-	* Crash reporting
-    * Utility library
-      * Math, file system, events, thread pool, task scheduler, logging, memory allocators and more
-    
-## Features (coming in near future)
- * DirectX 12/Vulkan support
- * Physically based renderer
- * Physics system integration
- * Audio system integration
- * Animation
- * Mac & Linux support
-
-## Development state
-
-Project is currently in active development. Current version is considered a preview version. Bugs are to be expected, optimization is not complete and some major features are yet to be added (see below for a list).
-
-## Download/Install
-
-Downloading pre-compiled binaries is the easiest way to check out Banshee if you don't want to go through the hassle of compiling it yourself. 
-
-[Download binaries (Windows x64)] (http://bearishsun.thalassa.feralhosting.com/Banshee_Win_x64_v0.2.0.zip)
-
-## Compiling from source
-
-Banshee compiles on VS2013 and VS2015. Other Windows compilers might work but have not been tested. Support for more platforms and compilers will become available with time.
-
-Aside from Banshee source code you will also need various third party dependencies. You may retrieve/compile those dependencies yourself by following a guide in "CompilingDependenciesManually.txt". If you are using VS2015 you can avoid compiling dependencies by downloading a set of pre-compiled dependencies below. These should be extracted in the root of the directory containing Banshee source code.
-
-[Download precompiled dependencies (VS2015)] (http://bearishsun.thalassa.feralhosting.com/BansheeDependencies_VS2015_v0.2.0.zip) 
- 
-## Getting started
-
-Banshee is a multi-layered engine that aims to be flexible enough to handle various needs. Therefore this section is split into two sub-sections, first one aimed for game developers (high-level C# programmers, artists, designers) and second one for engine developers (low level C++ programmers).
-
-### Getting started (Game developers)
-
-Easiest way to get started is to check out the [video guide] (https://youtu.be/WJsYOyCXGEU). The guide shows you how to use the essential parts of the editor to create a simple working application. Also check out the code snippets with some basic code examples below.
-
-#### Component with simple input
-```
-    public class Player : Component
-    {
-        void OnUpdate()
-        {
-            Vector3 movement = Vector3.Zero;
-
-            if (Input.IsButtonHeld(ButtonCode.Left))
-                movement -= Vector3.XAxis*Time.FrameDelta;
-            else if (Input.IsButtonHeld(ButtonCode.Right))
-                movement += Vector3.XAxis*Time.FrameDelta;
-            else if (Input.IsButtonHeld(ButtonCode.Up))
-                movement -= Vector3.ZAxis * Time.FrameDelta;
-            else if (Input.IsButtonHeld(ButtonCode.Down))
-                movement += Vector3.ZAxis * Time.FrameDelta;
-            
-            SceneObject.MoveLocal(movement);
-        }
-    }
-```
-
-#### Creating GUI
-```
-    public class MyGUI : Component
-    {
-        void OnInitialize()
-        {
-            GUILabel label = new GUILabel("A couple GUI elements:");
-
-            GUIButton button = new GUIButton("Click me");
-            button.OnClick += () => Debug.Log("Clicked me!");
-
-            GUITextBox input = new GUITextBox();
-            input.OnChanged += (x) => Debug.Log("Text input: " + x);
-
-            GUILayoutY verticalLayout = GUI.Panel.AddLayoutY();
-            verticalLayout.AddElement(label);
-            verticalLayout.AddElement(button);
-            verticalLayout.AddElement(input);
-        }
-    }
-```
-
-#### Creating a camera
-```
-	SceneObject cameraSO = new SceneObject("MyCamera");
-	camera = cameraSO.AddComponent<Camera>();
-	camera.NearClipPlane = 0.05f;
-	camera.FarClipPlane = 2500.0f;
-	camera.ClearColor = Color.Black;
-
-	cameraSO.Position = new Vector3(0, 0, 5);
-	cameraSO.LookAt(new Vector3(0, 0, 0));
-```
-
-#### Creating a custom resource
-```
-    [SerializeObject]
-    public struct Item
-    {
-        public int id;
-        public string name;
-        public int count;
-    }
-
-    public class InventoryData : ManagedResource
-    {
-        public List<Item> items;
-    }
-
-    ...
-
-    InventoryData inventory = ManagedResource.Create<InventoryData>();
-    ... fill inventory with items ...
-    ProjectLibrary.Create(inventory, "SavedInventory.asset");
-```
-
-### Getting started (Engine developers)
-
-Easiest way to get started with low-level Banshee programming is to check out the `ExampleProject` included with the source code. However to give you a taste here are a few code snippets.
-
-#### Starting a minimal application
-```
-	RENDER_WINDOW_DESC renderWindowDesc;
-	renderWindowDesc.videoMode = VideoMode(1280, 720);
-	renderWindowDesc.title = "My App";
-	renderWindowDesc.fullscreen = false;
-	
-	Application::startUp(renderWindowDesc, RenderSystemPlugin::DX11);
-	Application::instance().runMainLoop();
-	Application::shutDown();
-```
-
-#### Importing resources
-```
-	HMesh dragonModel = gImporter().import<Mesh>("Dragon.fbx");
-	HTexture dragonTexture = gImporter().import<Texture>("Dragon.psd");
-```
-
-#### Adding and positioning a camera
-```
-	HSceneObject sceneCameraSO = SceneObject::create("SceneCamera");
-	HCamera sceneCamera = sceneCameraSO->addComponent<CCamera>(window);
-
-	sceneCameraSO->setPosition(Vector3(40.0f, 30.0f, 230.0f));
-	sceneCameraSO->lookAt(Vector3(0, 0, 0));
-```
-
-#### Setting up a material
-```
-	HShader diffuse = gImporter().import<Shader>("Diffuse.bsl");
-	HMaterial dragonMaterial = Material::create(diffuse);
-   
-	dragonMaterial->setTexture("albedo", dragonTexture);
-```
-
-#### Adding an object for rendering
-```
-	HSceneObject dragonSO = SceneObject::create("Dragon");
-  
-	HRenderable renderable = dragonSO->addComponent<CRenderable>();
-	renderable->setMesh(dragonModel);
-	renderable->setMaterial(dragonMaterial);
-```
-
-#### Adding GUI
-```
-	HSceneObject guiSO = SceneObject::create("GUI");
-	HCamera guiCamera = guiSO->addComponent<CCamera>(window);
-	HGUIWidget gui = guiSO->addComponent<CGUIWidget>(guiCamera);
-  
-	GUIPanel* guiPanel = gui->getPanel();
-	GUILayout* guiLayout = guiPanel->addNewElement<GUILayoutY>();
-	guiLayout->addNewElement<GUIButton>(HString(L"Click me!"));
-	guiLayout->addNewElement<GUIButton>(HString(L"Click me too!"));
-```
-
-# License
-
-Banshee is offered completely free for personal or commercial use under the GNU Lesser General Public License v3 (LGPL v3). A commercial license is also available for those that cannot comply with LGPL terms or just want more flexibility. 
-
-# Author
-
-Banshee was created and is developed by Marko Pintera.
-
-Contact me at [e-mail] (http://scr.im/39d1) or add me on [LinkedIn] (https://goo.gl/t6pPPs). 
+## Learn more
+
+* [Features](blob/preview/Documentation/GitHub/features.md)
+* [Roadmap](blob/preview/Documentation/GitHub/roadmap.md)
+* [Install](blob/preview/Documentation/GitHub/install.md)
+* [Compiling](blob/preview/Documentation/GitHub/compiling.md)
+* [Documentation](blob/preview/Documentation/GitHub/documentation.md)
+* [License](blob/preview/Documentation/GitHub/license.md)
+* [About](blob/preview/Documentation/GitHub/about.md)