Jun 17th, 10
/
Roguestar is a science fiction roguelike game written using Haskell and OpenGL. It is in the early stages of development. At this time, it is not a winnable game.
$ cabal install roguestar-engine
$ cabal install roguestar-gl
$ ~/.cabal/bin/roguestar
- or -
$ git clone http://www.downstairspeople.org/git/roguestar.git
$ cd roguestar
$ git checkout 0.4.0.1
$ make install
New gameplay features:
- Melee combat, sundering and disarming attacks
- Weapons can sometimes overheat or explode
- Gateway teleportation between planets
- Use material-spheres to craft new tools
- Use material-spheres to heal
- Tab-completion of typed commands
- Compass directions to significant artifacts
- “Jump” short distances by teleporting
New objects:
- Chromalite material spheres
- Metallic material spheres
- Gaseous material spheres
- Energy sabres and fleurets
- Gateways
- Monoliths
New graphics features:
- Randomly generated sky spheres and landscapes
- Unique fractal trees
- Zoom-in/zoom-out
Changes under the hood:
- Major re-write of the RSAGL FRP architecture
- Multi-threaded 3D scene assembly and rendering
- Multi-threaded, anticipatory engine
- Various OpenGL performance improvements
For more information, links to the manual and git repository, visit http://roguestar.downstairspeople.org.
Check it out!
Aug 9th, 09
/
I’ve been playing around with an Arrow concept, which to my knowledge is original. I’ve decided to call this a FactoryArrow:
newtype FactoryArrow m n a b = FactoryArrow { runFactory :: m (Kleisli n a b) }
Where m and n are Monads. m is a single-pass initialization monad, while n is a multiple-pass working monad. The arrow supports all of the standard accessory arrow typeclasses, including ArrowLoop if n implements MonadFix, and ArrowApply if m and n are the same.
This arrow simply captures a two-phase initialize-and-run design pattern.
To the best of my imagination, there cannot be a corresponding useful FactoryMonad. I would be extremely interested if anyone can contradict me on that point.
My current interest is in using the FactoryArrow as a replacement for the mealy-style arrows by using IORefs (or potentially even STM transaction variables) to store automaton states instead of unevaluated thunks.
The corresponding implementation as of the time of this writing.
May 5th, 09
/
Last night I checked out Scott E. Dillard’s Vec library. It’s a good, fast, pure implementation of the basic matrix operations applicable to 3D graphics. Switching to Vec has shaved off quite a bit of time from one of my demo apps and relieved me of the need to maintain my own matrix manipulation code, which was causing me repeated headaches.
It’s very heavy with MPTCs, fundeps, and type families, which will cause ghc to render some pretty inane error messages, but if you’re already accustomed to this then it’s actually very straightforward to use.
May 9th, 08
/
website: http://roguestar.downstairspeople.org
darcs 2: darcs get –lazy http://www.downstairspeople.org/darcs/roguestar
tarball: http://www.downstairspeople.org/roguestar/roguestar-0.2.tar.gz
After much delay, I’m happy to announce Roguestar 0.2.
Roguestar is a science fiction themed roguelike (turn-based,
chessboard-tiled, role playing) game written in Haskell. Roguestar uses
OpenGL for graphics. This is still a very early release and several
important things don’t work.
This initial release allows you to play one of six alien races. You begin
the game stranded on an alien planet, fighting off an endless hoard of
hostile robots.
RSAGL, the RogueStar Animation and Graphics Library, includes a
domain-specific monad for 3D modelling of arbitrary parametric surfaces,
as well as an animation monad and arrow, which is more or less like YAMPA
as a stack of arrow transformers. RSAGL was specifically designed for
roguestar, but every effort has been made (including the license) to make
it accessable to other projects that might benefit from it. Performance
is an issue, but there is a lot of low-hanging fruit in this area.
Roguestar is released under the Affero General Public License version 3.
However, RSAGL uses a permissive license.
I would be absolutely thrilled to receive any feedback anyone may have on
the design and aesthetics of the game, especially in the form of source
code.
Jan 28th, 08
/
In addition to implementing legs, I have improved the performance of the arrow-based animation very significantly.
