Difference between revisions of "Frag"

From HaskellWiki
Jump to: navigation, search
m (typo)
(link rainbyte/frag)
 
(21 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 
'''Frag'''
 
'''Frag'''
  +
  +
[[Image:Frag1.png]]
   
 
Frag is a 3D first person shooting game written in Haskell, by Mun Hon
 
Frag is a 3D first person shooting game written in Haskell, by Mun Hon
 
Cheong. It is licensed under the GPL. The design and implementation of
 
Cheong. It is licensed under the GPL. The design and implementation of
Frag is described in Mun's undergraduate thesis,
+
Frag is described in Mun's 2005 undergraduate thesis,
[http://www.cse.unsw.edu.au/~pls/thesis/munc-thesis.pdf Functional Programming and 3D Games].
+
[http://www.cse.unsw.edu.au/~pls/thesis/munc-thesis.pdf Functional Programming and 3D Games]. An AI system for Frag is described in Jayatheeban Soundararajan's 2007 undergrad thesis, also titled [http://www.cse.unsw.edu.au/~pls/thesis/theeban-thesis.pdf Functional Programming and 3D Games].
  +
  +
[http://uk.youtube.com/watch?v=0jYdu2u8gAU YouTube Video]
   
 
== Features ==
 
== Features ==
Line 14: Line 16:
 
== Requirements ==
 
== Requirements ==
   
* GHC 6.4 or greater, providing HOpenGL-2.0.
+
* GHC 8 (2017 fork) or GHC 6.8 or greater, providing HOpenGL-2.0.
* OpenGL drivers that support the vertex array and multitexture OpenGL extensions
+
* OpenGL drivers that support the vertex array and multi-texture OpenGL extensions
  +
* Frag has portability problems. It is known to work on i386 and AMD64, and known not to work on big-endian systems.
  +
  +
See the blog article [http://monadickid.blogspot.com/2008/11/haskell-eye-for-windows-guy.html A Haskell eye for the windows guy] for the list of requirements and how to install for Windows users.
   
 
== Download ==
 
== Download ==
   
The code is distributed via a darcs repository: ''darcs get http://www.cse.unsw.edu.au/~pls/repos/frag''
 
  +
The original code can be downloaded from
  +
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/frag Hackage]; it is also distributed via a Darcs repository:
   
[http://darcs.net darcs] is the standard rcs of the Haskell community.
 
  +
darcs get http://code.haskell.org/frag
  +
  +
A port for GHC 8 is available: https://github.com/rainbyte/frag
   
 
== Contributions ==
 
== Contributions ==
   
Frag needs contributions from the community! Darcs send patches to
+
Frag needs contributions from the community! Submit pull requests to https://github.com/rainbyte/frag
[http://www.cse.unsw.edu.au/~dons/ Don Stewart].
 
   
 
== Screenshots ==
 
== Screenshots ==
  +
(Note that these screenshots are of the old level, which was replaced for copyright reasons.)
   
[http://www.cse.unsw.edu.au/~dons/images/frag/mun-frag1.jpg]
 
  +
[[Image:Frag2.png]]
 
[http://www.cse.unsw.edu.au/~dons/images/frag/mun-frag2.jpg]
 
 
[http://www.cse.unsw.edu.au/~dons/images/frag/mun-frag3.jpg]
 
 
[http://www.cse.unsw.edu.au/~dons/images/frag/mun-frag4.jpg]
 
   
[http://www.cse.unsw.edu.au/~dons/images/frag/frag1.png]
 
  +
[[Image:Frag3.png]]
   
[http://www.cse.unsw.edu.au/~dons/images/frag/frag2.png]
 
  +
[[Image:Frag4.png]]
   
[http://www.cse.unsw.edu.au/~dons/images/frag/frag3.png]
 
  +
[[Image:Frag5.png]]
   
[http://www.cse.unsw.edu.au/~dons/images/frag/screen3.png]
 
  +
[[Category:Applications]]
  +
[[Category:Games]]
  +
[[Category:3D]]
   
[http://www.cse.unsw.edu.au/~dons/images/frag/screen5.png]
 
  +
== BibTeX Entry ==
   
[http://www.cse.unsw.edu.au/~dons/images/frag/screen7.png]
 
  +
<pre>
  +
@mastersthesis{Frag,
  +
author = {Mun Hon Cheong},
  +
title = {Functional Programming and 3D Games},
  +
year = {2005},
  +
month = {November},
  +
school = {University of New South Wales},
  +
address = {Sydney, Australia},
  +
abstract = {Games are commonly programmed in imperative languages.
  +
Functional languages have been known to have benefits but have
  +
rarely been used to program games. In this thesis we implement
  +
a first person shooting game in Haskell and Yampa. The merits
  +
of this approach are examined.}
  +
}
  +
</pre>

Latest revision as of 11:31, 5 May 2017

Frag

Frag1.png

Frag is a 3D first person shooting game written in Haskell, by Mun Hon Cheong. It is licensed under the GPL. The design and implementation of Frag is described in Mun's 2005 undergraduate thesis, Functional Programming and 3D Games. An AI system for Frag is described in Jayatheeban Soundararajan's 2007 undergrad thesis, also titled Functional Programming and 3D Games.

YouTube Video

Features

  • Yampa, a domain-specific embedded language for the programming of hybrid systems that using the concepts of Functional Reactive Programming (FRP) was used to program the game entities.
  • The Quake 3 BSP level format, Q3Map2, and the MD3 format for models and animations are used in this game.
  • Sven Panne's OpenGL binding, HOpenGL is used to render graphics.

Requirements

  • GHC 8 (2017 fork) or GHC 6.8 or greater, providing HOpenGL-2.0.
  • OpenGL drivers that support the vertex array and multi-texture OpenGL extensions
  • Frag has portability problems. It is known to work on i386 and AMD64, and known not to work on big-endian systems.

See the blog article A Haskell eye for the windows guy for the list of requirements and how to install for Windows users.

Download

The original code can be downloaded from Hackage; it is also distributed via a Darcs repository:

darcs get http://code.haskell.org/frag

A port for GHC 8 is available: https://github.com/rainbyte/frag

Contributions

Frag needs contributions from the community! Submit pull requests to https://github.com/rainbyte/frag

Screenshots

(Note that these screenshots are of the old level, which was replaced for copyright reasons.)

Frag2.png

Frag3.png

Frag4.png

Frag5.png

BibTeX Entry

@mastersthesis{Frag,
    author   = {Mun Hon Cheong},
    title    = {Functional Programming and 3D Games},
    year     = {2005},
    month    = {November},
    school   = {University of New South Wales},
    address  = {Sydney, Australia},
    abstract = {Games are commonly programmed in imperative languages.
                Functional languages have been known to have benefits but have
                rarely been used to program games. In this thesis we implement
                a first person shooting game in Haskell and Yampa. The merits
                of this approach are examined.}
}