[ yn / yndd / fg / yume ] [ o / lit / media / og / ig / 2 ] [ ot / cc / x / sugg ] [ hikki / rec ] [ news / rules / faq / recent / annex / manage ] [ discord / matrix / scans / mud / minecraft / usagi ] [ aurorachan / desuchan / sushigirl / lewd ]

/ig/ - RPGMaker / Gamedev

RPGMaker Help and Indie Game Development
Password (For file deletion.)

A server move will likely be done in the near future to provide upgraded hardware. This could cause a few hours to a couple days of downtime.

File: 1491602187519-0.png (150.38 KB, 960x540, I82pszO.png)

File: 1491602187519-1.png (36.53 KB, 960x540, UWscWkD.png)

File: 1491602187519-2.png (681.38 KB, 960x540, o881Dk7.png)

File: 1491602187519-3.png (18.29 KB, 484x500, wV5MIKn.png)


Well, I said back in >>>/fg/91 when I announced the end of my Tsunagari game engine that if my new game engine ever surpassed it, I would make a new thread. I think that has actually happened a while ago. The new thread fits better in this board, which didn't exist when the other thread was made.

Progress is sporadic, but we're further than Tsunagari ever got, in far less time overall, and with clean and maintainable code. I present Driftwood 2D, a game development suite written in Python 3.

The Driftwood 2D Game Development Suite is a game engine and related set of tools designed for the purpose of allowing a novice to develop a fully featured tile-based 2D game. Driftwood 2D is currently undergoing heavy alpha-stage development and should not be considered stable. API changes will occur frequently at this stage. However, it is currently suitable for making very simple exploration-style games.

Driftwood 2D is a spiritual successor to Tsunagari, an engine in C++ with similar goals, which ran into irreconcilable design flaws and spaghettified to death. Tsunagari was abandoned soon after the creation of this engine.

The engine loads a world package made of images, sounds, maps, descriptive files, and scripts, and then passes itself to the scripts as an interface to its internal API. From there, the scripts in the world package interact with and control the engine to perform its functions, resulting in a playable game. All public functions in the engine are accessible through the scripts. Maps are designed in Tiled and saved in JSON format, and the engine config file and entity descriptor files are also written in JSON.

Current features include:
* Infinite graphical and walkable layers
* Resource caching
* Virtual filesystem for game data and patches, supporting zip files
* Tile and sprite animations
* Sound effects and music
* Configurable input handling
* Timed callbacks
* Lightmaps
* Rudimentary database for saving data between plays
* Fully scriptable in Python 3
…and more on the way!

* SDL2
* SDL2_image
* SDL2_mixer
* SDL2_ttf
* Python >= 3.3.3
* Python jsonschema (https://pypi.python.org/pypi/jsonschema)
* Python PySDL2 (https://pypi.python.org/pypi/PySDL2/)

Current release is Alpha-0.0.3a. This version is confirmed to run on Windows and Linux. The screenshots are from a couple different versions so some things look a little different.

GitHub: https://github.com/seisatsu/Driftwood
Download Current Release: https://github.com/seisatsu/Driftwood/releases/tag/Alpha-0.0.3a

The engine doesn't have a manual written yet, but the code contains usage instructions for each API function, and much can be learned by looking through the test game data that comes with the download.


File: 1491983232210.png (18.87 KB, 484x500, alpha-0.0.4a.png)

Released yesterday, Alpha-0.0.4a adds the following features:

* Replace ScaffyDB with a JSON/zlib based flatfile database.
* Compile bytecode before packing pyz executable.
* Manually unwind SDL resources on shutdown instead of using the unreliable __del__ method in most cases.
* Timestamps count engine ticks instead of SDL ticks.
* Move most rendering operations into the new FrameManager.
* Text and container widgets.
* Command line database editor utility.
* Code cleanup.
* Bugfixes and tweaks.

You can get it here:

I am going to be working on writing the User's Manual for the next release so that people can actually start reasonably using this thing.


Very nice got it to run on windows, no surprise there. This still holds a lot of potential i'm glad to see you haven't abandoned your goals.

As a hobbyist programmer myself, one of the things that stopped my programs from crumbling apart after a few months was looking into programming design patterns and software architecture.

I'm just saying this because I want you to succeed and not spend several months just to write 3 lines of code to make the one simple thing you want happen, or rewriting the entire engine because your code is scattered, and you forgot where and what your functions do. That's where I was for several years, apparently it's a common problem among hobbyist.


Thanks for the support.

I put a lot of thought into designing this after Tsunagari crumbled, and I'm also working on it with a partner so there's some good discussion on how things will be done. We've successfully refactored messy parts of the code as well. Getting another game engine almost to this point only to find the code was unworkable was a big eye opener, so I'm constantly looking for ways to improve the design. It's also very nice to be writing in Python this time rather than the more rigid C++.

By the way, a new release was made on GitHub a few days ago, so I'll write that up here soon.


File: 1492693786142.png (388.38 KB, 1366x768, 1492485547_2017-04-17_1366….png)

Alpha-0.0.5 released two days ago. Feels like longer.

The biggest change in this release is the addition of pixel mode entities. Rather than walking a tile at a time, this new class of entities can move pixel by pixel. Tile based and pixel based entities can collide and interact.

Previously, tile/spritesheet graphic IDs started at 0, and the animation member IDs started at 1. This was confusing, so now they both start at 1, with 0 meaning no graphic.

You can now hold shift (or your configured key) and use the movement keys to face a direction without walking.

You can now change the database root or disable halting on the command line.

This release also refactored and rewrote some of the entity code not related to pixel entities. Bugs were fixed in entity and input handling.

We have also included a binary package for Windows which should not require you to install any dependencies. It has been tested on Windows 10 and may not run on earlier versions.



File: 1493225348569.png (122.59 KB, 1366x695, docs.png)

We have just released Alpha-0.0.6. We are edging closer to beta. This is a feature packed release with some very useful additions. Here are some of the bigger changes we made in this version.

* The player can move diagonally in pixel movement mode.

* You can open another database during runtime, allowing for things like save files.

* The cache has more responsibilities now and cannot be disabled. We also cannot find a situation in which setting ttl to a low value would not solve any problem.

* Add define() and undefine() functions to ScriptManager for defining custom triggers that give you some syntactical sugar in the map editor.

* Pressing tilde (or your configured key) in-game while input.debug is true in the config file will interrupt the game with a pdb prompt in the console. You can execute event scripting code live here. When done, type "continue".

* Fixed some code issues in the testing world.

* Improved and fixed bugs in resource handling.

* Finished first chapter of documentation.

* Other bugfixes.

You can get it here:


Released Alpha-0.0.7 which was mostly a bugfix release but also added a few new features.

* Cleaner/prettier way of calling scripts from each other.
* New method for looking up tiles.
* Entity graphics can now have multiple layers.
* Remove selfpath configuration option.
* A good number of bugfixes.

Download: https://github.com/seisatsu/Driftwood/releases/tag/Alpha-0.0.7


Made what's probably the last release for a while a couple weeks ago. I'm burned out on this project and will most likely return to it in a few months. Manual isn't done yet but I may work on it separately from the code during my break time. For the truly interested, all public API functions are documented within the engine code.

This release greatly increases the engine's ability to avoid crashes, and also adds a couple features. It also requires Python >= 3.5 from now on.

This is Alpha-0.0.8.

* Check all public method arguments for validity.
* Add Python 3.5 type annotations. (Also increase minimum Python to 3.5.)
* Remove ability to control ticks per second, preferring automatic calculation. Set Max FPS instead to limit TPS.
* Custom global event handlers. You can define a function such that it can be referenced by a shortcut name within the map editor.
* Support loading external Tiled tileset files.
* Lots of refactoring and bugfixes.

Download: https://github.com/seisatsu/Driftwood/releases/tag/Alpha-0.0.8

I will get around to making a Windows binary for this release at some point if I can get the necessary tools working with Python 3.5.

Didn't sage the post since it's been over a month.



File: 1506904721716.png (58.7 KB, 1366x768, 1506904392_2017-10-01_1366….png)

Just released Alpha-0.0.9.

This release adds bugfixes and the following features and changes:

* Switch to Universal Binary JSON for the database format.
* Beginnings of support for occlusion. Loading and rendering times are heavily reduced.
* STDLib support for loading and inserting widgets from descriptor files called Widget Trees, which currently support Jinja2 templating with variables, includes, and multiple layers of container widgets.
* Code restructuring.

Get it here: https://github.com/seisatsu/Driftwood/releases/tag/Alpha-0.0.9
Windows Binary coming soon.


File: 1507264386926-0.png (5.9 KB, 485x500, screen.png)

File: 1507264386926-1.png (26.76 KB, 395x473, template.png)

File: 1507264386926-2.png (30.82 KB, 977x285, test.png)

File: 1507264386926-3.png (53.98 KB, 700x889, text.png)

In addition to the usual bugfixes, this release's major features are lazy map loading and more complete graphical occlusion which speed things up significantly, especially for large areas, as well as a more complete widget tree description language which supports things like newlines and relative positioning. Entity descriptors now also support Jinja2.

Download: https://github.com/seisatsu/Driftwood/releases/tag/Alpha-0.0.10



Alpha-0.0.11 is released.

Apart from a few smaller feature additions, this release is mostly about restructuring the project.

Two new API libraries were created – Folkdance and Stageshow. Folkdance is a reference library which will mostly handle advanced entity-entity, entity-player, and entity/player-world interactions. Currently it contains an InventoryManager and a PlayerManager. Stageshow is a special effects and choreography library.

Stdlib was dissolved, some of its functions moved into the core engine and others into the aforementioned new libraries. In addition, the testing worlds, libraries, and documentation were split into submodules. Note that this means extra steps are necessary to collect everything together to build from source, so a Linux binary release is included. This release gives the Makefile the ability to generate releases.

There is now a __common__ directory inside the data directory. Libraries placed in this folder are automatically added to the data path at startup. Stdlib was initially moved from the source directory to here, but then it was replaced by Folkdance and Stageshow.

JSON schemas were consolidated into strings in a Python file to defeat a complication when building on Windows.

The underscore character is now a shortcut for accessing temporary variables in the engine. Instead of Driftwood.vars["variable"], you can now reference _["variable"].

It is now possible to append or prepend path segments to the config file's path from the command line, instead of only being able to replace it.

InputManager now has contexts, so that for example you can have different keybindings for menus than for player control.

Widget Tree handling was moved to the core engine, and resides in widgettree.py.

The engine now sets its working directory to the directory of the config file you are loading.

And of course, there were many bugfixes.


[Return][Go to top] [Catalog] [Post a Reply]
Delete Post [ ]
[ yn / yndd / fg / yume ] [ o / lit / media / og / ig / 2 ] [ ot / cc / x / sugg ] [ hikki / rec ] [ news / rules / faq / recent / annex / manage ] [ discord / matrix / scans / mud / minecraft / usagi ] [ aurorachan / desuchan / sushigirl / lewd ]