... newer stories
Sonntag, 24. August 2014
Simple Directmedia Wrapper
autolykos, 13:37h
Bei Grafikprogrammierung habe ich mich bislang immer auf Allegro (https://www.allegro.cc) verlassen; die Bibliothek kann ich immer noch empfehlen, gerade für Einsteiger, aber an vielen Ecken könnte sie schneller, portabler oder ausgereifter sein. In dieser Hinsicht ist Simple Directmedia Layer oft deutlich überlegen, weshalb ich jetzt zu SDL2 wechsle. Beide sind jedoch reine C-Bibliotheken, was bei Programmierern die C++ und RAII* gewohnt sind regelmäßig für Kopfschmerzen sorgt. Also mussten ein paar Wrapper-Klassen her, um die Arbeit zu erleichtern und Ressorcenmanagement zu übernehmen.
Das Ergebnis ist der Simple Directmedia Wrapper, eine header-only-Bibliothek die dem Anwender die ganze nervige Buchhalterarbeit abnimmt.
Ein anderer beklagenswerter Mangel sind schnelle, vielseitige und einfache Widget-Bibliotheken die reibungslos mit SDL zusammenarbeiten. Die meisten Programmierer scheinen CEGUI zu benutzen, aber in der Praxis ist es oft unnötig groß und komplex. GWEN und KiWi sehen auch vielversprechend aus, aber beide neigen zu Abstürzen und scheinen nicht mehr weiterentwickelt zu werden. Mein Ansatz hierfür sind die Quick&Dirty Widgets, eine weitere header-only-Bibliothek die zusammen mit SDW benutzt werden sollte. Sie können mit SDL's Software- oder Hardware-Renderer benutzt werden; man kann das GUI aber auch als OpenGL-Textur binden, irgendwo auf den Bildschirm projizieren und mit shaderbasiertem OpenGL oder Immediate Mode mischen. Der Skin wird aus einer Bilddatei geladen und kann angepasst werden; Ein Win98-artiges Design ist standardmäßig dabei.
Beide Bibliotheken verwenden C++11 (insbesondere shared_ptr und Lambdas) und erfordern daher einen modernen Compiler; ich habe sie auf Ubuntu 12.04 mit GCC und Windows 7 mit MinGW getestet. Außerdem benötigen sie SDL2 mit Image- und TTF-Plugins und (wenn OpenGL benutzt werden soll) GLEW**.
Die erste Alphaversion gibt's hier, mit einem Beispielprogramm das die verschiedenen Anwendungen zeigt:
sdw-qdw-alpha1 (zip, 590 KB)
Until recently, I mostly used Allegro (https://www.allegro.cc) for graphics. I can still reccomend it, especially to beginners, but I often found it not fast, portable or mature enough. I find Simple Directmedia Layer superior in this regard, which caused me to switch to SDL2. Both, however, are pure C libraries, which causes frequent headaches for programmers used to C++ and RAII*. What I needed was a bunch of Wrapper Classes to simplify my work and take care of the resources. This resulted in the Simple Directmedia Wrapper, a header-only-library that handles all the bookkeeping for you.
Another thing I missed was a fast, versatile and simple Widget library that plays well with SDL. Most people seem to use CEGUI, which I find too large and compex for most uses. GWEN and KiWi also look promising, but both are prone to crashes and development seems to have ceased. My solution are the Quick&Dirty Widgets, another header-only-library for use with SDW. They can be drawn using SDL's Software- or Hardware-Renderer, but you can also bind the GUI to an OpenGL-texture, project it somewhere to the screen and mix it with shader-based or immediate-mode OpenGL. The skin is loaded from an image file and can be modified freely; a Win98-like look is included.
Both libraries use C++11 (especially shared_ptr and lambdas) and thus require a modern compiler; I tested them on Ubuntu 12.04 with GCC and Windows 7 with MinGW. They also require SDL2 with the Image- and TTF-Plugin and, if they are to be used with OpenGL, GLEW**.
This is the first alpha version, compete with an example program to show how it can be used:
sdw-qdw-alpha1 (zip, 590 KB)
---
* http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization
** The example also uses GLM, but the libraries themselves don't.
Das Ergebnis ist der Simple Directmedia Wrapper, eine header-only-Bibliothek die dem Anwender die ganze nervige Buchhalterarbeit abnimmt.
Ein anderer beklagenswerter Mangel sind schnelle, vielseitige und einfache Widget-Bibliotheken die reibungslos mit SDL zusammenarbeiten. Die meisten Programmierer scheinen CEGUI zu benutzen, aber in der Praxis ist es oft unnötig groß und komplex. GWEN und KiWi sehen auch vielversprechend aus, aber beide neigen zu Abstürzen und scheinen nicht mehr weiterentwickelt zu werden. Mein Ansatz hierfür sind die Quick&Dirty Widgets, eine weitere header-only-Bibliothek die zusammen mit SDW benutzt werden sollte. Sie können mit SDL's Software- oder Hardware-Renderer benutzt werden; man kann das GUI aber auch als OpenGL-Textur binden, irgendwo auf den Bildschirm projizieren und mit shaderbasiertem OpenGL oder Immediate Mode mischen. Der Skin wird aus einer Bilddatei geladen und kann angepasst werden; Ein Win98-artiges Design ist standardmäßig dabei.
Beide Bibliotheken verwenden C++11 (insbesondere shared_ptr und Lambdas) und erfordern daher einen modernen Compiler; ich habe sie auf Ubuntu 12.04 mit GCC und Windows 7 mit MinGW getestet. Außerdem benötigen sie SDL2 mit Image- und TTF-Plugins und (wenn OpenGL benutzt werden soll) GLEW**.
Die erste Alphaversion gibt's hier, mit einem Beispielprogramm das die verschiedenen Anwendungen zeigt:
sdw-qdw-alpha1 (zip, 590 KB)
Until recently, I mostly used Allegro (https://www.allegro.cc) for graphics. I can still reccomend it, especially to beginners, but I often found it not fast, portable or mature enough. I find Simple Directmedia Layer superior in this regard, which caused me to switch to SDL2. Both, however, are pure C libraries, which causes frequent headaches for programmers used to C++ and RAII*. What I needed was a bunch of Wrapper Classes to simplify my work and take care of the resources. This resulted in the Simple Directmedia Wrapper, a header-only-library that handles all the bookkeeping for you.
Another thing I missed was a fast, versatile and simple Widget library that plays well with SDL. Most people seem to use CEGUI, which I find too large and compex for most uses. GWEN and KiWi also look promising, but both are prone to crashes and development seems to have ceased. My solution are the Quick&Dirty Widgets, another header-only-library for use with SDW. They can be drawn using SDL's Software- or Hardware-Renderer, but you can also bind the GUI to an OpenGL-texture, project it somewhere to the screen and mix it with shader-based or immediate-mode OpenGL. The skin is loaded from an image file and can be modified freely; a Win98-like look is included.
Both libraries use C++11 (especially shared_ptr and lambdas) and thus require a modern compiler; I tested them on Ubuntu 12.04 with GCC and Windows 7 with MinGW. They also require SDL2 with the Image- and TTF-Plugin and, if they are to be used with OpenGL, GLEW**.
This is the first alpha version, compete with an example program to show how it can be used:
sdw-qdw-alpha1 (zip, 590 KB)
---
* http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization
** The example also uses GLM, but the libraries themselves don't.
... link (0 Kommentare) ... comment
Noch ein generisches Rollenspielsystem
autolykos, 11:58h
Jeder Rollenspieler der etwas auf sich hält scheint früher oder später sein eigenes Regelsystem zu schreiben (oder zumindest eine Sammlung an Hausregeln, die leicht als neues System durchgehen könnten). Meine Motivation dafür war, dass meine Gruppe regelmäßig sehr unterschiedliche Szenarien spielt und nicht andauernd neue Regeln lernen will. Also brauchten wir ein generisches System. Bislang hat man da im Wesentlichen die Wahl zwischen sehr freien Systemen wie Wushu und FATE (die mir nicht genug Anhaltspunkte geben um konsistent zu leiten, und der Gruppe nicht genug um ihre Handlungen zu planen), und GURPS - mehrere tausend Seiten voll mit Regeln und Tabellen, die sich kaum jemand merken kann oder will und die umfassender sind als ein halbes Dutzend spezialisierter Systeme (ich mag es trotzdem irgendwie...).
Damit war Selberbauen angesagt. Meine Anforderungen:
- Es darf nicht größer sein als unbedingt nötig, und muss auch für Anfänger verständlich sein.
- Es muss ohne spezialisierte Materialien auskommen (nur sechsseitige Würfel!)
- Die Regeln müssen genau genug sein, dass die Spieler vorher ungefähr wissen können wie die Situation behandelt wird, und planen können.
- Es muss möglich sein, nicht benötigte Teile der Regeln zu ignorieren ohne anderswo in Schwierigkeiten zu kommen.
Das Ergebnis ist eine Sammlung von Modulen (jedes nur ein paar Seiten lang), die nach Belieben kombiniert werden können, und alles von Fantasy bis SciFi abdecken: Das Generische Modulare System.
Runterladen kann man die aktuelle Version bei scribd:
http://de.scribd.com/collections/4321900/GMS-1-01DE
---
Yet another generic role playing game system
Sooner or later, every GM worth his salt seems to design his own system (or at least a collection of house rules that could easily pass for one). My motivation for this was a group that likes to play lots of different settings, but can't be bothered to learn a new set of rules for each. Thus, we needed a generic system. Currently, there's the choice between freeform systems like Wushu and FATE (that make consistent GMing and planning harder than it should be), and GURPS - a few thousand pages worth of rules and tables few people would want to learn, which are larger than half a dozen specialized systems taken together (I still have a soft spot for it, though...).
In short, we needed a new system. My requirements were:
- It should be as small as possible, and quickly explained to beginners.
- It should not require specialized material (so, only D6s)
- The rules should still be specific enought that the players can know beforehand how a situation will be handled (and plan accordingly)
- You should be able to safely ignore any part of the rules you don't want to use
The result is a collection of modules, a few pages each, that can be mixed and matched freely and covers everything from Fantasy to SciFi: The Generic Modular System.
You can get the current version at scribd:
http://de.scribd.com/collections/4319550/GMS-1-01EN
Damit war Selberbauen angesagt. Meine Anforderungen:
- Es darf nicht größer sein als unbedingt nötig, und muss auch für Anfänger verständlich sein.
- Es muss ohne spezialisierte Materialien auskommen (nur sechsseitige Würfel!)
- Die Regeln müssen genau genug sein, dass die Spieler vorher ungefähr wissen können wie die Situation behandelt wird, und planen können.
- Es muss möglich sein, nicht benötigte Teile der Regeln zu ignorieren ohne anderswo in Schwierigkeiten zu kommen.
Das Ergebnis ist eine Sammlung von Modulen (jedes nur ein paar Seiten lang), die nach Belieben kombiniert werden können, und alles von Fantasy bis SciFi abdecken: Das Generische Modulare System.
Runterladen kann man die aktuelle Version bei scribd:
http://de.scribd.com/collections/4321900/GMS-1-01DE
---
Yet another generic role playing game system
Sooner or later, every GM worth his salt seems to design his own system (or at least a collection of house rules that could easily pass for one). My motivation for this was a group that likes to play lots of different settings, but can't be bothered to learn a new set of rules for each. Thus, we needed a generic system. Currently, there's the choice between freeform systems like Wushu and FATE (that make consistent GMing and planning harder than it should be), and GURPS - a few thousand pages worth of rules and tables few people would want to learn, which are larger than half a dozen specialized systems taken together (I still have a soft spot for it, though...).
In short, we needed a new system. My requirements were:
- It should be as small as possible, and quickly explained to beginners.
- It should not require specialized material (so, only D6s)
- The rules should still be specific enought that the players can know beforehand how a situation will be handled (and plan accordingly)
- You should be able to safely ignore any part of the rules you don't want to use
The result is a collection of modules, a few pages each, that can be mixed and matched freely and covers everything from Fantasy to SciFi: The Generic Modular System.
You can get the current version at scribd:
http://de.scribd.com/collections/4319550/GMS-1-01EN
... link (0 Kommentare) ... comment
Die Bithalde
autolykos, 11:16h
Dieses Blog ist eine Sammlung verschiedener Ideen, Konzepte und Projekte, an denen ich gerade arbeite, und die ich mit der Welt teilen möchte (und vielleicht die eine oder andere Schimpftirade über aktuelle Themen). Nichts auf dieser Seite erhebt irgend einen Anspruch auf Vollständigkeit, Nützlichkeit oder Korrektheit - aber es steht jedem frei es runterzuladen und zu benutzen.
Wenn nichts anderes angegeben ist, ist alles auf dieser Seite unter der CC-BY-NC-SA Lizenz verfügbar. Ich bitte darum, Nutzungen die davon nicht abgedeckt sind vorher mit mir aushandeln.
---
The Bit Dump
This blog is a collection of various ideas, concepts and projects I want to share (and maybe the occasional rant about current topics). Nothing here has any claim on being complete, useful or correct; it is provided as is, and you're free to download and use it.
Unless explicitly written otherwise, all content is licensed under CC-BY-NC-SA. Any other use needs to be negotiated with me first.
Wenn nichts anderes angegeben ist, ist alles auf dieser Seite unter der CC-BY-NC-SA Lizenz verfügbar. Ich bitte darum, Nutzungen die davon nicht abgedeckt sind vorher mit mir aushandeln.
---
The Bit Dump
This blog is a collection of various ideas, concepts and projects I want to share (and maybe the occasional rant about current topics). Nothing here has any claim on being complete, useful or correct; it is provided as is, and you're free to download and use it.
Unless explicitly written otherwise, all content is licensed under CC-BY-NC-SA. Any other use needs to be negotiated with me first.
... link