Skip to content

Tiny 2d graphics environment written in rust aimed at teaching kids to code

Notifications You must be signed in to change notification settings

rpasta42/skomakare

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2D Graphics environment with a custom scheme-like scripting language called lambda-oxide. The main aim of the project is to teach fundamentals of programming to kids and introduce beginner programmers to lisp. Skomakare is written in rust and uses glium.

Example Tic Tac Toe game

Drawing circle from triangles

For rendering text, you need to install comic sans ttf font (sudo apt-get install ttf-mscorefonts-installer).

Tutorial

Draw a square

**> (square red)
**> (square blue)
**> (square "resources/texture.png")

If we want to modify a shape after initially creating it, then you need to save the shape to a variable name.

(define my-square (square blue))
(rotate my-square (/ pi 10))
(move my-square 0.3 0.3)
$ ./setup.sh; cargo run
**>(l "circle.lo")
**>(l "tictactoe.lo")
**>(define my-triangle (triangle red))
**>(move my-triangle 0.3 0.3)
**>(define my-square (square "resources/opengl.png"))
**>(define rotate-square
      (lambda (i)
         (do (sleep 0.05)
             (rotate my-square (/ pi 10))
             (if (> i 0)
                  (rotate-square (- i 1))
                  "done"))))
**>(rotate-square 1000)

TODO

What works, what doesn't:

  • options to create hidden objects
  • defining new shaders from string in loscirpt
  • Making basic shapes with colors
    • check-exists function (?? forgot what this note is about)
    • triangle
    • square
    • circle
      • can export blender circle to obj after triangulation
      • primitive shape constructed in rust
      • can construct circle with triangles from loscript (very slow)
  • colors/textures
    • texture compiled from string and added to shader manager from loscript.
    • red, green & blue
    • custom color from rgb
    • texture from png file (works for triangles and squares)
    • texture from jpeg
    • add changecolor for existing project
    • setting clearcolor from loscript
  • text rasterization
    • very ugly comic sans without picking colors
    • fix opposite orientation
    • create better-looking fragment shader with gradients
    • account for aspect ratio of text, and be able to pass resolution manually
  • changing shapes
    • moving shapes
    • rotating shapes
    • scaling shapes
    • setting shape position
    • setting rotation
    • flip function (x and y)
    • setting scale
    • add get_pos, get_rot, get_scale to loscript
  • add tiny sleep on the render thread loop waiting for events
  • scene manager
    • connecting rust scenemanager to loscript
    • quadtrees
  • mouse and keyboard input
    • Very basic, needs a re-write
  • setup script needs to also be able to update examples-data
  • misc
    • lisp shaders
    • check out stuff from logo
  • custom shapes with points, lines or trianges from loscript
    • PrimitiveType::Points
  • https://en.wikipedia.org/wiki/Octree http://www.gamedev.net/page/resources/_/technical/game-programming/introduction-to-octrees-r3529

old todo:

License: GPLv2+

About

Tiny 2d graphics environment written in rust aimed at teaching kids to code

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published