Compare commits
10 Commits
c89b7cc456
...
509533bb29
Author | SHA1 | Date | |
---|---|---|---|
509533bb29 | |||
217d818e65 | |||
762d9aa732 | |||
7c370a9e4b | |||
04f0ea2031 | |||
5819f28ab9 | |||
1374ba664d | |||
5e9508e9cd | |||
a0f3372320 | |||
849af2419c |
14
LICENSE
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
Copyright 2008-2019 Alex Yatskov
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
31
README.md
@ -1,4 +1,4 @@
|
|||||||
# Moonfall #
|
# Moonfall
|
||||||
|
|
||||||
Moonfall is the name of a game engine that I spent several months developing back in 2008. It leveraged SDL for
|
Moonfall is the name of a game engine that I spent several months developing back in 2008. It leveraged SDL for
|
||||||
graphics, Lua for in-game scripting, and wxWidgets for the built-in developer tools. The cross-platform engine was
|
graphics, Lua for in-game scripting, and wxWidgets for the built-in developer tools. The cross-platform engine was
|
||||||
@ -12,15 +12,20 @@ friendly bunch, but something about them does not seem right. Everyone is appear
|
|||||||
player, who must uncover the truth to survive. In short, this is (as I have described it to my friends), "Harvest Moon
|
player, who must uncover the truth to survive. In short, this is (as I have described it to my friends), "Harvest Moon
|
||||||
with Murder."
|
with Murder."
|
||||||
|
|
||||||
## Technology ##
|
[![Gameplay window](img/gameplay-thumb.png)](img/gameplay.png)
|
||||||
|
[![Sprite editor](img/sprite-editor-thumb.png)](img/sprite-editor.png)
|
||||||
|
[![Console window](img/console-thumb.png)](img/console.png)
|
||||||
|
[![Asset editor](img/asset-editor-thumb.png)](img/asset-editor.png)
|
||||||
|
[![Map editor](img/map-editor-thumb.png)](img/map-editor.png)
|
||||||
|
|
||||||
|
## Technology
|
||||||
|
|
||||||
From a technical point of view, the game engine was an exercise in creating a completely data driven game. In
|
From a technical point of view, the game engine was an exercise in creating a completely data driven game. In
|
||||||
retrospect, it was probably over-engineered, but in general it was flexible and I liked what I could do with it. At the
|
retrospect, it was probably over-engineered, but in general it was flexible and I liked what I could do with it. At the
|
||||||
core of the engine was the `Actor` class, the functionality of which could be expanded through add-on properties. The
|
core of the engine was the `Actor` class, the functionality of which could be expanded through add-on properties. The
|
||||||
property definitions were specified in XML; for example, below is the definition for the playable character:
|
property definitions were specified in XML; for example, below is the definition for the playable character:
|
||||||
|
|
||||||
|
```xml
|
||||||
```
|
|
||||||
<Actor alias = "Player.01" dynamic = "1" layer = "4" thumbnail = "Player.01.Idle.S.01">
|
<Actor alias = "Player.01" dynamic = "1" layer = "4" thumbnail = "Player.01.Idle.S.01">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Animation />
|
<Animation />
|
||||||
@ -34,8 +39,7 @@ In addition to the self-explainable `Animation` and `Physics` properties, you ca
|
|||||||
Lua script with the actor. Scripts would get notifications about events such as `OnActorUpdate`, during which custom
|
Lua script with the actor. Scripts would get notifications about events such as `OnActorUpdate`, during which custom
|
||||||
processing could take place:
|
processing could take place:
|
||||||
|
|
||||||
|
```lua
|
||||||
```
|
|
||||||
function OnActorUpdate(elapsed)
|
function OnActorUpdate(elapsed)
|
||||||
if InputIsKeyTriggered(META_KEY_USE) then
|
if InputIsKeyTriggered(META_KEY_USE) then
|
||||||
DoActorUse()
|
DoActorUse()
|
||||||
@ -62,8 +66,7 @@ Scripts can directly interact with properties on the parent `Actor` and can comm
|
|||||||
messaging system. This made it possible to build any game object imaginable by editing a couple of XML files and some
|
messaging system. This made it possible to build any game object imaginable by editing a couple of XML files and some
|
||||||
simple scripting.
|
simple scripting.
|
||||||
|
|
||||||
|
```lua
|
||||||
```
|
|
||||||
function DoActorWalk(direction)
|
function DoActorWalk(direction)
|
||||||
if playerAction == ACTION_WALK and playerDirection == direction then
|
if playerAction == ACTION_WALK and playerDirection == direction then
|
||||||
return
|
return
|
||||||
@ -92,15 +95,3 @@ end
|
|||||||
|
|
||||||
I eventually stopped work on Moonfall due to a lack of time, combined with the fact that I am not an artist and could
|
I eventually stopped work on Moonfall due to a lack of time, combined with the fact that I am not an artist and could
|
||||||
not author the assets required to develop this into a complete game.
|
not author the assets required to develop this into a complete game.
|
||||||
|
|
||||||
## Screenshots ##
|
|
||||||
|
|
||||||
[![Gameplay window](https://foosoft.net/projects/moonfall/img/gameplay-thumb.png)](https://foosoft.net/projects/moonfall/img/gameplay.png)
|
|
||||||
[![Sprite editor](https://foosoft.net/projects/moonfall/img/sprite-editor-thumb.png)](https://foosoft.net/projects/moonfall/img/sprite-editor.png)
|
|
||||||
[![Console window](https://foosoft.net/projects/moonfall/img/console-thumb.png)](https://foosoft.net/projects/moonfall/img/console.png)
|
|
||||||
[![Asset editor](https://foosoft.net/projects/moonfall/img/asset-editor-thumb.png)](https://foosoft.net/projects/moonfall/img/asset-editor.png)
|
|
||||||
[![Map editor](https://foosoft.net/projects/moonfall/img/map-editor-thumb.png)](https://foosoft.net/projects/moonfall/img/map-editor.png)
|
|
||||||
|
|
||||||
## License ##
|
|
||||||
|
|
||||||
GPL
|
|
||||||
|
BIN
img/asset-editor-thumb.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
img/asset-editor.png
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
img/console-thumb.png
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
img/console.png
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
img/gameplay-thumb.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
img/gameplay.png
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
img/map-editor-thumb.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
img/map-editor.png
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
img/sprite-editor-thumb.png
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
img/sprite-editor.png
Normal file
After Width: | Height: | Size: 71 KiB |