Difference between revisions of "Game Development"

From HaskellWiki
Jump to navigation Jump to search
(link haskellers SIG)
m (updated url)
(65 intermediate revisions by 15 users not shown)
Line 1: Line 1:
 
[[Category:Games]] [[Category:Community]]
 
[[Category:Games]] [[Category:Community]]
   
This page and the #haskell-game [[IRC channel]] is the starting point for everyone interested in doing game development with Haskell.
+
This page and the #haskell-game [[IRC channel]] are the starting points for everyone interested in doing game development with Haskell. You may also wish to join the [http://www.haskellers.com/teams/7 Games group] on haskellers.com, or [http://www.reddit.com/r/haskellgamedev the Haskell game development subreddit].
   
 
There are quite a lot of games, unfinished libraries, and interested people out there - please gather links here and join us on '''[irc://irc.freenode.net/#haskell-game #haskell-game]''' !
 
There are quite a lot of games, unfinished libraries, and interested people out there - please gather links here and join us on '''[irc://irc.freenode.net/#haskell-game #haskell-game]''' !
   
You may also wish to join the [http://www.haskellers.com/teams/7 Games special interest group] on haskellers.com.
 
   
  +
== Games and game engines ==
   
  +
* [[Applications and libraries/Games]] lists [[Applications and libraries/Games#Games|games]] and [[Applications and libraries/Games#Game_Engines_and_Libraries|game engines/libs]]
== Software ==
 
   
  +
* See also Hackage categories: [http://hackage.haskell.org/packages/#cat:Game Game], [http://hackage.haskell.org/packages/#cat:Game%20Engine Game Engine], [http://hackage.haskell.org/packages/#cat:Graphics Graphics], [http://hackage.haskell.org/packages/#cat:Sound Sound], [http://hackage.haskell.org/packages/#cat:Physics Physics], [http://hackage.haskell.org/packages/#cat:FRP FRP]
* [[Applications and libraries/Games]] - a partial list of Haskell games, engines and game-related libs
 
  +
  +
* Other game-related wiki pages: [[:category:Games]]
  +
  +
  +
=== Other supporting software ===
  +
  +
* [http://hackage.haskell.org/package/grid grid] provides tools for working with regular arrangements of tiles, such as might be used in a board game or self-organising map (SOM). Grid currently supports triangular, square, and hexagonal tiles, with various 2D and toroidal layouts ([https://github.com/mhwombat/grid/wiki description]).
   
* Some relevant Hackage categories: [http://hackage.haskell.org/packages/archive/pkg-list.html#cat:game Game] - [http://hackage.haskell.org/packages/archive/pkg-list.html#cat:game Game Engine] - [http://hackage.haskell.org/packages/archive/pkg-list.html#cat:graphics Graphics] - [http://hackage.haskell.org/packages/archive/pkg-list.html#cat:sound Sound] - [http://hackage.haskell.org/packages/archive/pkg-list.html#cat:physics Physics]
 
   
 
== Articles and blog posts ==
 
== Articles and blog posts ==
  +
  +
<!-- add new ones at the top, probably -->
  +
  +
* [http://blog.haskellformac.com/blog/writing-games-in-haskell-with-spritekit Writing Games in Haskell with SpriteKit]
  +
  +
* [http://free-idea-monoid.blogspot.ca/2015/09/skeletal-animation-for-games-in-haskell.html Skeletal animation for games in Haskell]
  +
  +
* [http://free-idea-monoid.blogspot.ca/2014/03/experimenting-with-game-engine-concepts.html Experimenting with game engine concepts in Haskell]
  +
  +
* [http://fho.f12n.de/posts/2014-10-25-easily-extensible-entity-enigma.html The easily extensible entity enigma]
  +
  +
* [http://www.gamedev.net/page/resources/_/technical/game-programming/haskell-game-object-design-or-how-functions-can-get-you-apples-r3204 Haskell Game Object Design - Or How Functions Can Get You Apples]
  +
  +
* [http://keera.co.uk/blog/2014/10/15/from-60-fps-to-500/ From 60 Frames per Second to 500 in Haskell]
  +
  +
* [http://www.reddit.com/r/haskell/comments/2f9w0p/is_it_practical_to_write_a_strong_chess_engine_in/ Is it practical to write a strong chess engine in Haskell?]
  +
  +
* [https://www.youtube.com/watch?v=1MNTerD8IuI Writing a game in Haskell] (video)
  +
  +
* [https://ocharles.org.uk/blog/posts/2013-08-01-getting-started-with-netwire-and-sdl.html Getting Started with Netwire and SDL]
  +
  +
* [https://github.com/alexander-b/master-thesis The Quest for Programming Nirvana: On Programming Game Systems in Haskell]; a Master Thesis on programming game systems in Haskell
  +
  +
* [http://www.cse.unsw.edu.au/~pls/thesis/munc-thesis.pdf Functional Programming and 3D Games] (thesis, PDF)
  +
  +
* [http://blog.chucklefish.org/?p=154 Wayward Tide: Technical Info]
  +
  +
* [https://ocharles.org.uk/blog/posts/2013-08-18-asteroids-in-netwire.html Asteroids & Netwire]
  +
  +
* [http://jshaskell.blogspot.nl/2012/09/breakout.html Writing JavaScript games in Haskell - Breakout]
  +
  +
* [https://github.com/leonidas/codeblog/blob/master/2012/2012-01-17-declarative-game-logic-afrp.md Purely Functional, Declarative Game Logic Using Reactive Programming]
  +
  +
* [http://folk.uio.no/carljsv/computergames/computergames.pdf Computer Games'] - trying to implement the game flow of a computer game
  +
  +
* [http://lambda-the-ultimate.org/node/1277 The Next Mainstream Programming Languages: A Game Developer's Perspective] (PPT, PDF) presentation by Tim Sweeney
  +
 
* [http://prog21.dadgum.com/23.html Purely Functional Retrogames]
 
* [http://prog21.dadgum.com/23.html Purely Functional Retrogames]
   
 
* [http://prog21.dadgum.com/36.html Accidentally Introducing Side Effects into Purely Functional Code]
 
* [http://prog21.dadgum.com/36.html Accidentally Introducing Side Effects into Purely Functional Code]
   
* [http://legacy.cs.uu.nl/daan/download/papers/wxhaskell.pdf wxHaskell - A Portable and Concise GUI Library for Haskell] (PDF) - describes an implementation of an asteroids game, [[wxAsteroids]]
+
* [[media:wxhaskell.pdf | wxHaskell - A Portable and Concise GUI Library for Haskell]] (PDF) - describes an implementation of an asteroids game, [[wxAsteroids]]
  +
  +
* [http://www.palgorithm.co.uk/2009/08/haskell-for-games/ Haskell for Games!] Blog post, with PDF slides from AngloHaskell talk.
  +
  +
* [http://www.gamasutra.com/view/feature/2985/postmortem_naughty_dogs_jak_and_.php Postmortem: Naughty Dog's Jak and Daxter: the Precursor Legacy]; an article about a game developed with a [http://en.wikipedia.org/wiki/Domain-specific_language DSL] compiler written in Lisp
  +
  +
* [http://lambdor.net/ Lambdor] blog mostly about Yampa FRP and game development in Haskell with some tutorials
  +
  +
* [http://jshaskell.blogspot.de/ Writing JavaScript games in Haskell]
  +
  +
* [http://lambdacube3d.wordpress.com/ LambdaCube 3D] is a domain specific language and library that makes it possible to program GPUs in a purely functional style.
  +
  +
* [http://morgenthum.dev/articles/write-haskell-game How to write a game in Haskell from scratch]
   
 
== Videos ==
 
== Videos ==
  +
* [http://video.google.com/videoplay?docid=9139666903029663537 Games in Haskell] - Matthew Sackman and Tristan Allwood on developing games with OpenGL in Haskell
 
  +
* [https://www.youtube.com/watch?v=9dk7_GDNocQ Playing with Graphics and Animations in Haskell]
   
 
* [http://www.youtube.com/watch?v=AJQZg3Po-Ag bloxors: an OpenGL Logic Game written in Haskell]
 
* [http://www.youtube.com/watch?v=AJQZg3Po-Ag bloxors: an OpenGL Logic Game written in Haskell]
   
  +
* [http://www.youtube.com/watch?v=XoE5CKLLnaM LambdaCube 3D - Stunts example]
== Other ==
 
  +
  +
* [http://www.youtube.com/watch?v=JleoASegUlk LambdaCube 3D - Quake 3 example]
  +
  +
== Examples ==
  +
  +
<!-- add new ones at the top, probably -->
  +
  +
* [http://folk.uio.no/carljsv/gorillabas/ GorillaBAS] - this was an attempt on defining computer games, and build such a thing.
  +
  +
* https://github.com/mlesniak/game - Haskell/OpenGL/Chipmunk game prototypes
  +
  +
* [[wxAsteroids]], a well-documented game, based on [[wxHaskell]]
  +
  +
* [https://github.com/simonmichael/hssdl-mac-example hssdl-mac-example] - how to make an SDL-using package buildable on mac OSX
  +
  +
* http://codepad.org/LRGEkkDp - initialization for SDL to start rendering OpenGL stuff
  +
  +
* http://hackage.haskell.org/package/stunts - A revival of the classic racing game Stunts to serve as a non-toy-sized example for LambdaCube.
  +
  +
* http://hackage.haskell.org/package/dow - Dungeons of Wor is an homage to the classic arcade game, Wizard of Wor. This game is also an experiment in functional reactive programming, so it might be a useful resource to anyone interested in this topic.
  +
  +
* [https://github.com/sseefried/open-epidemic-game Epidemic]: a small game for Android devices. As an added bonus a complete development environment for the game can be built with Docker using the [https://github.com/sseefried/docker-epidemic-build-env.git docker-epidemic-build-env] repo.
  +
  +
* [https://github.com/ivanperez-keera/haskanoid haskanoid]: a well-documented breakout clone with SDL graphics and Kinect and Wiimote support. Written in FRP, there's a fork in Haskell for Android.
  +
  +
* Possible Hackage categorisation guidelines: upload games to Game, engines and libs to Game Engine, or at least to some category beginning with Game, and check latest categories before uploading
  +
  +
== Forums ==
  +
  +
There are several forums in the Haskell world where game development can be discussed:
  +
* The [https://www.haskell.org/mailman/listinfo/haskell-cafe Haskell Café] mailing list
  +
  +
* This page
  +
  +
* [irc://irc.freenode.net/#haskell-game #haskell-game] ([[IRC]])
  +
  +
* [http://www.haskellers.com/teams/7 Special Interest Groups » Games] at Haskeller.com
  +
  +
* [https://github.com/haskell-game/brainstorming haskell-game] at GitHub
  +
  +
* [http://www.reddit.com/r/haskellgamedev Haskell Game Development] at reddit
  +
  +
The GitHub page [https://github.com/Calinou/awesome-gamedev awesome-gamedev] contains a list of general forums for game development, as well as lists of tools, utilities, libraries (some in Haskell) and learning resources.
  +
  +
== Wishlist ==
  +
  +
Is Hackage missing a useful data structure or library for some functionality that would benefit game programming? Suggestions for useful things can be added here as potential projects to hack on.
  +
  +
* [https://hackage.haskell.org/package/Octree Octtree], [http://hackage.haskell.org/package/KdTree kd]-[http://hackage.haskell.org/package/kd-tree tree], various space partitioning techniques (maybe start with [http://hackage.haskell.org/package/spacepart spacepart]).
  +
  +
* Binding to [http://www.fmod.org fmod]
   
  +
* Binding to [http://enet.bespin.org/Features.html enet] for multiplayer games. (jeffz is working on this).
* I am interested in learning how to program games. I created this wiki page for a discussion on game programming. I am interested in how to construct a game program. How does the the general game behave, which abstractions could be done in games, how is the gameplay, and what primitives could be used to construct such a game program? I suggest to consider simple, concrete games; here an attempt on a "five-in-a-row"-program: [http://folk.uio.no/carljsv/game/game-1.0.tar.gz game-1.0.tar.gz]
 

Revision as of 15:08, 9 September 2019


This page and the #haskell-game IRC channel are the starting points for everyone interested in doing game development with Haskell. You may also wish to join the Games group on haskellers.com, or the Haskell game development subreddit.

There are quite a lot of games, unfinished libraries, and interested people out there - please gather links here and join us on #haskell-game !


Games and game engines


Other supporting software

  • grid provides tools for working with regular arrangements of tiles, such as might be used in a board game or self-organising map (SOM). Grid currently supports triangular, square, and hexagonal tiles, with various 2D and toroidal layouts (description).


Articles and blog posts

  • Lambdor blog mostly about Yampa FRP and game development in Haskell with some tutorials
  • LambdaCube 3D is a domain specific language and library that makes it possible to program GPUs in a purely functional style.

Videos

Examples

  • GorillaBAS - this was an attempt on defining computer games, and build such a thing.
  • http://hackage.haskell.org/package/dow - Dungeons of Wor is an homage to the classic arcade game, Wizard of Wor. This game is also an experiment in functional reactive programming, so it might be a useful resource to anyone interested in this topic.
  • Epidemic: a small game for Android devices. As an added bonus a complete development environment for the game can be built with Docker using the docker-epidemic-build-env repo.
  • haskanoid: a well-documented breakout clone with SDL graphics and Kinect and Wiimote support. Written in FRP, there's a fork in Haskell for Android.
  • Possible Hackage categorisation guidelines: upload games to Game, engines and libs to Game Engine, or at least to some category beginning with Game, and check latest categories before uploading

Forums

There are several forums in the Haskell world where game development can be discussed:

  • This page

The GitHub page awesome-gamedev contains a list of general forums for game development, as well as lists of tools, utilities, libraries (some in Haskell) and learning resources.

Wishlist

Is Hackage missing a useful data structure or library for some functionality that would benefit game programming? Suggestions for useful things can be added here as potential projects to hack on.

  • Binding to enet for multiplayer games. (jeffz is working on this).