• Stars
    star
    163
  • Rank 231,141 (Top 5 %)
  • Language PureScript
  • License
    BSD 3-Clause "New...
  • Created almost 6 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🧙 ‎‎ A 3D game about functional programming patterns. Uses PureScript Native, C++, and Panda3D.

Lambda Lantern 😃

Lambda Lantern

What is Lambda Lantern? 🤔

Lambda Lantern

Lambda Lantern is a game made with PureScript, PureScript Native, and Panda3D. The premise of the game involves collecting and using functional programming patterns to solve puzzles and ultimately escape a dungeon.

One of the purposes of Lambda Lantern is to demonstrate binding PureScript to C++.

Lambda Lantern originally started as a GitHub Game Off submission.

How do I build and run Lambda Lantern? 🔨

Lambda Lantern

# Install Git.
# Install nvm (https://github.com/creationix/nvm).
# Install Panda3D (https://www.panda3d.org/download/sdk-1-10-1/).
# Install Haskell Stack (https://docs.haskellstack.org/en/stable/README/).

cd

# Install PureScript Native (https://github.com/andyarvanitis/purescript-native).

git clone https://github.com/andyarvanitis/purescript-native.git
cd purescript-native
git checkout aa857adec6aa40edac91bcacfe4c3b7c5f1c3f2d
stack install

cd

# Update path for PureScript Native compiler pscpp.

export PATH="${PATH}:${HOME}/.local/bin"

# Download and install the FFI exports.

git clone https://github.com/lettier/purescript-native-ffi.git
cd purescript-native-ffi
git checkout lambda-lantern

cd

git clone https://github.com/lettier/lambda-lantern.git

# Note the trailing dot.
cp -nr purescript-native-ffi/. lambda-lantern/ffi/

cd lambda-lantern

# Install Node.js.

nvm install `cat .nvmrc` && nvm use

# Install PureScript and psc-package.

npm install -g [email protected] [email protected]

# Install the PureScript dependencies.
psc-package install

# Build Lambda Lantern.
# Double check the include and lib paths.
# You may need additional flags for your platform.

make \
  CXXFLAGS=" \
    -fmax-errors=1 \
    -I/usr/include/python \
    -I/usr/include/panda3d \
    -I/usr/include/freetype2" \
  LDFLAGS=" \
    -L/usr/lib/panda3d \
    -lp3framework \
    -lpanda \
    -lpandafx \
    -lpandaexpress \
    -lp3dtoolconfig \
    -lp3dtool \
    -lp3pystub \
    -lp3direct \
    -pthread \
    -lpthread"

# Run Lambda Lantern.

LAMBDA_LANTERN_ASSETS_PATH="./assets" ./output/bin/lambda-lantern

What is the license? 📜

Lambda Lantern

For license information, see LICENSE.

Who wrote Lambda Lantern? Šī¸

Lambda Lantern

(C) 2018 David Lettier
lettier.com

More Repositories

1

3d-game-shaders-for-beginners

🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
C++
17,671
star
2

gifcurry

😎 The open-source, Haskell-built video editor for GIF makers.
Haskell
1,337
star
3

movie-monad

đŸ“ē A free and simple to use video player made with Haskell.
Haskell
420
star
4

ntpclient

NTP client.
C
139
star
5

webviewhs

🌐 A Haskell binding to the webview library created by Serge Zaitsev.
Haskell
122
star
6

lda-topic-modeling

A PureScript, browser-based implementation of LDA topic modeling.
PureScript
102
star
7

parsing-with-haskell-parser-combinators

🔍 A step-by-step guide to parsing using Haskell parser combinators.
Haskell
91
star
8

interactiveknn

Interactive K-Nearest Neighbors machine learning algorithm in JavaScript.
JavaScript
82
star
9

isosurface

Isosurface extraction using Marching Cubes and pure WebGL.
JavaScript
70
star
10

hacker-feud

đŸ’Ĩ A single page web game made with Svelte.
HTML
65
star
11

emoji-bingo

😄 A single page web game made with Svelte.
HTML
33
star
12

purescript-pop

😃 A functional reactive programming (FRP) demo created with PureScript events and behaviors.
PureScript
33
star
13

dnsclient

A simple DNS client similar to nslookup. Does not use any DNS libraries.
Python
28
star
14

blender-keymap-trainer

⌨ī¸ Digital flashcards for memorizing Blender's shortcut keys.
Svelte
27
star
15

webglbowling

A WebGL, browser-based bowling game that uses real-time physics.
JavaScript
24
star
16

lettier.github.io

HTML
21
star
17

interviewquestions

A collection of solutions to various technical interview questions.
Python
19
star
18

interactive-simple-linear-regression

A PureScript, browser-based implementation of simple linear regression.
PureScript
18
star
19

blendersim

Multi-agent robot simulator created with Blender.
Python
17
star
20

slackotron

A plugin extensible Slack bot.
Python
16
star
21

interactivekmeans

Interactive HTML canvas based implementation of k-means.
JavaScript
15
star
22

shortestpath

An interactive HTML5 canvas graph that shows the shortest path between any two nodes.
JavaScript
12
star
23

sierpinski

Explorable 3D Sierpinski tetrahedrons rendered using WebGL.
JavaScript
9
star
24

dubulrubul

Dual-sided, breakout-like 2D game using PhysicsJS, PubSubJS, EaselJS, and FunctionalJS.
JavaScript
8
star
25

poing

Browser based pong clone featuring a neuro-evolved AI opponent.
JavaScript
6
star
26

matrix-inverse-calculator

Input a square matrix and calculate its inverse if possible.
PureScript
5
star
27

bbautotune

Blender/Bullet automatic parameter tuning/learning.
TeX
4
star
28

telnetclientclone

A limited functionality Telnet client clone written in C.
C
3
star
29

boids

Boids steering behaviors created in 3D using the Panda3D API.
Python
3
star
30

webserver

A simple HTTP web server.
Python
3
star
31

cryptohoppershouter

Two tools for the automation of encrypting files and then later distributing them via email.
Python
3
star
32

simpl

Pong player utilizing a feedforward neural network and evolutionary algorithm.
JavaScript
3
star
33

webclient

A simple web client that retrieves files via HTTP from an HTTP server.
Python
2
star
34

wumpusworld

Wumpus World written in Java.
Java
2
star
35

smtpclient

A simple SMTP client that uses either port 25 or 587 with TLS authentication.
Python
2
star
36

chatserver

Simple chat server.
Python
2
star
37

bullytextsms

Code screen for DoSomething.org.
JavaScript
1
star
38

javatrafficlight

Java applet that displays and allows control of a crude traffic light.
Java
1
star
39

javaclock

Ticking analog clock made in Java.
Java
1
star
40

javacheckerboard

Java applet of a checker board.
1
star
41

javamancalaboard

Java applet that displays a Mancala board.
Java
1
star
42

lettier.com

Code for the main website.
JavaScript
1
star
43

jobjar

A job search web application.
JavaScript
1
star