@@ -5,35 +5,54 @@ Gunship
5
5
6
6
Gunship is an experimental game engine being developed as an effort to learn
7
7
more about the inner-workings of a modern game engine. It is being written in
8
- [ Rust] ( http://rust-lang.org/ ) in an attempt to break away from game
9
- development 's unhealthy codependence on C++.
8
+ [ Rust] ( http://rust-lang.org/ ) in an attempt to break away from the game
9
+ industry 's unhealthy codependence on C++.
10
10
11
11
Design Goals
12
12
------------
13
13
14
14
At this point Gunship is meant to be more of a learning project than a
15
- production-ready game engine (though of course I'd learn the most from building
16
- an engine that's actually used in a game). As such one of the design goals of
17
- Gunship is to do everything from scratch -- no external libraries are used to
18
- provide even basic game-related functionality. The only exceptions that I've
19
- made so far are the Rust standard library, since it's included by default, and
20
- bindings to platform-specific APIs, like winapi-rs. Even then I'm working on
21
- removing standard library from Gunship, so eventually the engine should have no
22
- dependencies outside of the project.
15
+ production-ready game engine. The idea is to build as much as possible from
16
+ scratch in order to develop myself as a programmer and learn all the parts
17
+ of a modern game engine. So far I've allowed myself to use the standard library
18
+ and libraries for binding to platform-specific native libraries, but the
19
+ intent is to keep dependencies to a minimum, even if there are relevant crates
20
+ in the Rust ecosystem.
23
21
24
22
As for the engine itself high-level design is pretty nonexistent. I'm keeping
25
23
development directed by building a game along with the engine, so for the time
26
24
being the design motivations for Gunship are "whatever work best for making a
27
- game".
25
+ game". At present the design is roughly as follows:
26
+
27
+ - The renderer is a separate crate from the engine core. It's potentially going
28
+ to be usable on its own, though right now that's not a primary goal. Mostly
29
+ the renderer's goal is to provide a high level, backend agnostic system for
30
+ rendering that can be tested idependently but easily be plugged into the
31
+ engine core.
32
+ - The engine core provides the scheduler, which makes it easy to write highly
33
+ parallel, asynchronous gameplay and engine code.
34
+ - The engine core only provides the primitives for gameplay development (e.g.
35
+ transforms, lights, meshes, etc.), but provides little-to-no framework for
36
+ structuring gameplay code. Such frameworks will likely be provided
37
+ as a layer on top of the engine core.
28
38
29
39
Current Features
30
40
----------------
31
41
32
42
The engine is very early in its development and so doesn't have much to show off
33
43
as of yet. That said, it does have a few working features at this point:
34
44
45
+ - Multi-threaded, async engine and gameplay code makes it easy to write games
46
+ while taking full advantage of multiple cores in modern CPUs.
35
47
- Basic (* very* basic) 3D mesh rendering support, just basic meshes and limited
36
- support for custom shading. No textures, materials, shadows, real features.
48
+ support for custom shading. No shadows, highly inefficient.
49
+
50
+ Broken Features
51
+ ---------------
52
+
53
+ The following features have been implemented in the past but were broken at some
54
+ point:
55
+
37
56
- 3D collision processing with sphere and box colliders. Actually pretty fast
38
57
compared to the other collision systems, though very much lacking in
39
58
functionality.
@@ -49,9 +68,8 @@ Planned Features
49
68
Beyond the obvious (making the existing systems more robust and actually
50
69
* usable* ) there are a few features that I plan to work on in the near future:
51
70
52
- - Proper rendering system, including support for custom surface materials and
53
- shaders, more efficient rendering through batching, skinned meshes, and
54
- particles.
71
+ - Proper rendering system, including more efficient rendering through batching,
72
+ skinned meshes, and particles.
55
73
- [ Cross-platform support] ( https://github.com/excaliburHisSheath/gunship-rs/milestones/Basic%20Cross-Platform%20Support )
56
74
for Linux and OSX at least, eventually I'd like to get to mobile support and
57
75
consoles, though who knows how long that could take.
0 commit comments