Difference between revisions of "SDL"

From HaskellWiki
Jump to navigation Jump to search
(Added the sections Introduction and Installation)
(Added a link to "The most inspiring green screen you will ever see")
(12 intermediate revisions by 2 users not shown)
Line 9: Line 9:
 
== Installation ==
 
== Installation ==
 
For installation of SDL on Windows, see [http://jpmoresmau.blogspot.com/2010/05/haskell-sdl-on-windows-check-hacking.html Haskell SDL on Windows, check! (hacking required)]
 
For installation of SDL on Windows, see [http://jpmoresmau.blogspot.com/2010/05/haskell-sdl-on-windows-check-hacking.html Haskell SDL on Windows, check! (hacking required)]
  +
Another page on installation of SDL:
  +
[http://www.animal-machine.com/blog/2010/04/a-haskell-adventure-in-windows/ A Haskell adventure in Windows]
   
   
Line 23: Line 25:
 
ld: symbol(s) not found
 
ld: symbol(s) not found
 
collect2: ld returned 1 exit status
 
collect2: ld returned 1 exit status
<[/code>
+
</code>
   
In the SDL bindings' MACOSX file there is some mention of a code example that shows how to solve this. Unfortunately, the darcs repository where this code resides is down. After asking Nick Alexander, who was mentioned in the MACOSX file, he referred to the following work by Audrey Tang, where the Main-file trick for making this compile can still be found: [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/TimePiece/]
+
In the SDL bindings' MACOSX file, there is some mention of a code example that shows how to solve this. Unfortunately, the Darcs repository where this code resides is down. After asking Nick Alexander, who was mentioned in the MACOSX file, he referred to the following work by Audrey Tang, where the Main-file trick for making this compile can still be found: [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/TimePiece/]
  +
  +
  +
== Libraries ==
  +
  +
* [http://hackage.haskell.org/package/SDL SDL], the main package
  +
* [https://github.com/Lemmih/hsSDL2 hsSDL2], this package contains Haskell bindings to libSDL >= 2.0.0
  +
* [http://hackage.haskell.org/package/SDL-image SDL-image], an image file loading library
  +
* [http://hackage.haskell.org/package/SDL-mixer SDL-mixer], a sample multi-channel audio mixer library
  +
* [http://hackage.haskell.org/package/SDL-ttf SDL-ttf], a sample library that allows you to use TrueType fonts
  +
* [http://hackage.haskell.org/package/SDL-gfx SDL-gfx], SDL graphics drawing primitives and other support functions
  +
* [http://hackage.haskell.org/package/Sprig Sprig], a foreign Binding to Jonny D's SDL Primitives Generator (SPriG) library
  +
* [http://hackage.haskell.org/package/graphics-drawingcombinators graphics-drawingcombinators], a functional wrapper around OpenGL, so you don't have to go into the deep, dark world of imperative stateful programming just to draw stuff
  +
* [http://hackage.haskell.org/package/haskgame haskgame], provides a video/audio/event handling library suitable for creating games or GUIs
  +
* [http://hackage.haskell.org/package/SFont SFont], a haskell port of Karl Bartel's bitmap SFont library ([http://liamoc.net/projects/sfont.html homepage])
  +
* [http://hackage.haskell.org/package/cv-combinators cv-combinators], provides a functional combinator library for computer vision (used by [http://hackage.haskell.org/package/RMP RMP])
  +
* [http://hackage.haskell.org/package/TeaHS TeaHS], a simple library for use creating 2D games
  +
* [http://hackage.haskell.org/package/cal3d-examples cal3d-examples], examples for the Cal3d animation library
  +
* [http://hackage.haskell.org/package/lui lui], Purely FunctionaL User Interface
  +
* [http://helm-engine.org Helm], a functionally reactive game engine
  +
  +
  +
== Applications using SDL ==
  +
  +
*[http://quasimal.com/projects/level_0.html Level 0], a Snake II clone written in Haskell
  +
* [http://hackage.haskell.org/package/HTicTacToe HTicTacToe], a tic-tac-toe game
  +
* [http://hackage.haskell.org/package/YACPong YACPong] Yet Another Pong Clone
  +
* [http://hackage.haskell.org/package/Eternal10Seconds Eternal10Seconds], a 2-D shooting game
  +
* [http://hackage.haskell.org/package/Raincat Raincat], a game developed by Carnegie Mellon students
  +
* [http://hackage.haskell.org/package/TimePiece TimePiece], a simple tile-based digital clock screen saver
  +
* [http://hackage.haskell.org/package/TypeClass TypeClass], a typing speed game
  +
* [http://hackage.haskell.org/package/breakout breakout], a simple Breakout game implementation
  +
* [http://hackage.haskell.org/package/brians-brain brians-brain], the Brian's Brain cellular automaton implemented in just 49 lines of Haskell
  +
* [http://hackage.haskell.org/package/ffmpeg-tutorials ffmpeg-tutorials], tutorials on ffmpeg usage to play video/audio
  +
* [http://hackage.haskell.org/package/freekick2 freekick2], a soccer game
  +
* [http://hackage.haskell.org/package/hbeat hbeat], a toy step sequencer program written using OpenGL and the SDL libraries
  +
* [http://hackage.haskell.org/package/hogre-examples hogre-examples], examples for using Hogre, Haskell bindings to OGRE (Object-Oriented Graphics Rendering Engine)
  +
* [http://hackage.haskell.org/package/starrover2 starrover2], a space simulation game
  +
* [http://hackage.haskell.org/package/astrds astrds], an incomplete 2d space game
  +
* [http://hackage.haskell.org/package/fallingblocks fallingblocks], a fun falling blocks game
  +
  +
See also the [http://packdeps.haskellers.com/reverse/SDL reverse dependencies listing for SDL]
  +
  +
  +
== Links ==
  +
  +
* [https://github.com/snkkid/LazyFooHaskell/ All LazyFoo's SDL tutorials ported to Haskell]
  +
  +
* [http://keera.co.uk/blog/2014/08/13/most-inspiring-green-screen-you-will-ever-see/ The most inspiring green screen you will ever see], a blog article about implementing a game with [[FRP]] and SDL, running on Android
  +
  +
* [http://hsdl.sourceforge.net/ HSDL], an alternative binding to libSDL
  +
  +
* [http://translate.google.com/translate?hl=en&sl=ja&u=http://www.f13g.com/%25A5%25D7%25A5%25ED%25A5%25B0%25A5%25E9%25A5%25DF%25A5%25F3%25A5%25B0/Haskell/HSDL/&prev=/search%3Fq%3Dreadme%2Bhsdl%26num%3D25%26hl%3Den%26client%3Dopera%26rls%3Den%26hs%3DRDO Using HSDL], an automatic translation from Japanese
  +
  +
* [http://www.mail-archive.com/haskell@haskell.org/msg22958.html A modified set of SDL bindings] to compile with Jhc

Revision as of 22:34, 14 August 2014

Introduction

The Haskell package SDL is a binding to the C library libSDL

From Wikipedia:
Simple DirectMedia Layer (SDL) is a cross-platform, free and open source software multimedia library written in C, that presents a simple interface to various platforms' graphics, sound, and input devices. Software developers use it to write computer games or other multimedia applications that can run on many operating systems including Windows, Mac OS X, OS 9, Linux, the PSP, Google Android, AmigaOS, AmigaOS 4, Haiku/BeOS, MorphOS, OpenVMS, Syllable, and WebOS. It manages video, events, digital audio, CD-ROM, sound, threads, shared object loading, networking and timers.


Installation

For installation of SDL on Windows, see Haskell SDL on Windows, check! (hacking required) Another page on installation of SDL: A Haskell adventure in Windows


Problems

Haskell-SDL with Mac OS X

There are some issues with the Haskell SDL bindings and Mac OS X, notably linking problems that result in an error such as:

Linking test ... Undefined symbols:

 "_SDL_main", referenced from:
     -[SDLMain applicationDidFinishLaunching:] in libSDLmain.a(SDLMain.o)

ld: symbol(s) not found collect2: ld returned 1 exit status

In the SDL bindings' MACOSX file, there is some mention of a code example that shows how to solve this. Unfortunately, the Darcs repository where this code resides is down. After asking Nick Alexander, who was mentioned in the MACOSX file, he referred to the following work by Audrey Tang, where the Main-file trick for making this compile can still be found: [1]


Libraries

  • SDL, the main package
  • hsSDL2, this package contains Haskell bindings to libSDL >= 2.0.0
  • SDL-image, an image file loading library
  • SDL-mixer, a sample multi-channel audio mixer library
  • SDL-ttf, a sample library that allows you to use TrueType fonts
  • SDL-gfx, SDL graphics drawing primitives and other support functions
  • Sprig, a foreign Binding to Jonny D's SDL Primitives Generator (SPriG) library
  • graphics-drawingcombinators, a functional wrapper around OpenGL, so you don't have to go into the deep, dark world of imperative stateful programming just to draw stuff
  • haskgame, provides a video/audio/event handling library suitable for creating games or GUIs
  • SFont, a haskell port of Karl Bartel's bitmap SFont library (homepage)
  • cv-combinators, provides a functional combinator library for computer vision (used by RMP)
  • TeaHS, a simple library for use creating 2D games
  • cal3d-examples, examples for the Cal3d animation library
  • lui, Purely FunctionaL User Interface
  • Helm, a functionally reactive game engine


Applications using SDL

  • Level 0, a Snake II clone written in Haskell
  • HTicTacToe, a tic-tac-toe game
  • YACPong Yet Another Pong Clone
  • Eternal10Seconds, a 2-D shooting game
  • Raincat, a game developed by Carnegie Mellon students
  • TimePiece, a simple tile-based digital clock screen saver
  • TypeClass, a typing speed game
  • breakout, a simple Breakout game implementation
  • brians-brain, the Brian's Brain cellular automaton implemented in just 49 lines of Haskell
  • ffmpeg-tutorials, tutorials on ffmpeg usage to play video/audio
  • freekick2, a soccer game
  • hbeat, a toy step sequencer program written using OpenGL and the SDL libraries
  • hogre-examples, examples for using Hogre, Haskell bindings to OGRE (Object-Oriented Graphics Rendering Engine)
  • starrover2, a space simulation game
  • astrds, an incomplete 2d space game
  • fallingblocks, a fun falling blocks game

See also the reverse dependencies listing for SDL


Links

  • HSDL, an alternative binding to libSDL
  • Using HSDL, an automatic translation from Japanese