User:TsT
Contents
Introduction
Start playing with löve in 2009 (v0.5.0) Is back in 2011 on löve 0.7.1.
Projects is to rewrite my "jail" project (see [love-master project (jail, ...)])
My Projects
- LOWS : Löve On Web Server
- Status : in progress
- Goal: Provide a Löve and LUBE compatible interface on server side to support (massively) multiplayer network games.
- Require:
- server side :
- + nginx (openresty.org)
- + lua support, better: luajit support
- + hua: my hardened modular lua approach
- + faked-cgilua-rpc-support (TsT)
- + lua-rpc-server lua json rpcserver part (modified version)
- + json support : json in lua, faster C json, lua json over LPEG ... see also json.org benchmarks manual
- + love support LUBE server
- over custom protocol ...
- server databases :
- + redis (with lua and json support)
- client side :
- + ssl or https support (...) see [LuaSec (samples, ssl options, ...)]
- + http keep-alive support (TsT)
- + love support LUBE client
- over custom protocol ...
- both :
- UTF-8 support (maybe usefull)
- UTF-8 support for lua (in pure lua)
- Status: released
- URL:
- bit64 : 64bits bit-wise emulation for Lua 32bits environment
- crypto.akiss3-1 : random generator algorithm named AKISS v3.1
- Status: Done, not released yet
- URL: ...
- Deps: require bit64
- Orig: http://besides.us/posts/5
- lova ; Love API
- Desc: provide a layer to abstract the love primive
- Goal: provide an easier interface, fix bug, manage alternative
- Sample:
- - lova.random(*) -- I just want random things ! without thinking about seed and bug -- never re-seed() ! sample of security break due to reseed
- - lova.class(*) -- I just want a class ! ... don't care about what class implementation
- - lova.screen* -- a simple way to change settings !
- - lova.sound* -- sound manager !
- - strict
- - lova.gui -- !
- - lova.debug
- - lova.require(*) -- the require() to use for love modules !
- lovapi.module.load("alternatives") -- like require("alternatives")
- lovapi.module.unload("anothermodule") -- remove and clean a module
- lovapi.module.load("lova.import"):init()
- lovapi.module.init("lova.import")
- lovapi.provide("import", lovapi.module.get("import"))
- lovapi.configure("class", require("class-commons"))
- LCE : Löve Callbacks Enforcer
- Status : released (obsolete?)
- See : LCE forum thread
- fakelove
- Status : frozen
- Goal: Build a compatible lua environment in pure lua
- luajail and lovejail
- Status : frozen
- Goal: made a secure (jailed) environment for running löve's games.
- TODO: test the crack*.love attacks see this thread
- Goal: be able to allow/deny access of library or function (like os, io, require ...) for the LUA part, and some love functions for the LOVE part
- jailfs (lib)
- Status : in progress
- Goal: be able to filter that is allowed to read (and write) on file system access
- Feature: think about allow a way to load a case insensitive filename (usefull for stupid zip software that push upper case character... seen in some forum topics...)
- jailnet (lib)
- Status : nothing done yet
- Goal: like jailfs but with the network connections (filter the ip:port like simple firewall)
- gameconf (lib)
- Status : frozen
- Goal: having easy function to manage game settings
- (FIXME: I don't remember what exactly but I have part of code about that...)
- LUSE : Löve User Settings Enforcer
- Status : frozen
- Goal: always keep control! be able to choose and enforce my user settings, allow or deny change on resolution/input grabbing/window-or-full-screen mode/no sound/etc.
- love-master
- Goal: have a magic key (or sequence) to pause the game and got back to a safe environnement (like the love console?) to be able do ... what you want.
- For example:
- debugging (see memory usage, variable values, ...)
- profiling (see stats about most called function) see ProfilingLuaCode
- access to the safe menu to configure (simple-firewall, jailfs or others settings)
- Part of this project is to catch and lock the love callbacks ...
- launcher
- Goal: be bale to run my local love (with love-master, settings enforcement, etc.) have a way to choose what game is available. Run one of them in jail environnement.
- random lib
- Status : Done, not released yet
- A simple random generator with safe (re-)initialization.
- Inspired from http://love2d.org/forums/viewtopic.php?f=3&t=2748
- Idea: Using a seed with current random try.
- Sample: function init() math.randomseed(math.random()*os.time()) end
- Goal: You will be able to re-init it without predictability problem.
- Note: include it in the jail (and catch the randomseed to forbid re-init)
- love strict framework
- Goal: show warning or raise error when we do something ugly like :
- require("module.lua") --> must use require("module")
- use of draw functions outside of the love.draw (strict way = disable draw function outside of love.draw)
- abuse of global variables (Use strict module and declare global variables)
- use of module() deprecated use (recode your module!)
- use of file name with cases, prefer full lower case (rename your file!)
- use of creation of new object every frames. How detect that ?
- ...
- Goal: show warning or raise error when we do something ugly like :
- ACL lib
- Status: idea
- Goal: be able to use Access Control List configuration
- Usefull for lot of my security projects
ACL API of VLC :
local a = vlc.acl(true) -> new ACL with default set to allow a:check("10.0.0.1") -> 0 == allow, 1 == deny, -1 == error a("10.0.0.1") -> same as a:check("10.0.0.1") a:duplicate() -> duplicate ACL object a:add_host("10.0.0.1",true) -> allow 10.0.0.1 a:add_net("10.0.0.0",24,true) -> allow 10.0.0.0/24 (not sure) a:load_file("/path/to/acl") -> load ACL from file
Others idea projects
- love API patch (see love.screen ...)
- - newFrameBuffer internaly catch error (return nil on error).
- - add missing screen/graphics functions (getFsaa, getVsync, ...)
- - add missing filesystem functions (getIdentity)
- - and more ...
- input layout
- Goal: be able to manage keyboard : French, English, ... also maybe manage mouse with more than 3 ou 5 buttons.
- multi-love (lib)
- Goal: be able to run multiple (windowed) love program and link them together.
- Goal: be able to link (over network/LUBE?) multiple love program and share actions.
- input layer (lib)
- Goal: be able to virtualise inputs (to have more than one mouse, one keyboard) see multi-love.
Experimentation in Future
- AI project
- Play with simple Artificial Intelligence, see UnLöve: Zombie Survival
- drawing with z index (see Snippers Skip list and Skip list Drawing Order)
- collision with circular zone
- drawing only if in zone : defined a target zone, exclude outside objets from drawing process
- proof of concept of webradio player
My work done
- lovemake.sh
- Status : Done, released
- Description: script to package directory to .love file my lovemake.sh
- from ruby to lua or bash version, see http://love2d.org/forums/viewtopic.php?p=26001#p26001
Currently done (not yet released) :
- stringimprove (lib)
- Status : Aborted, strong is better.
- (released : here) finally prefer using the BlackBulletIV's strong.lua lib
- Goal: Like String_exploding string.explode(), be able to split string as separated arguments in table.
- Improved String exploding Snippet see http://love2d.org/wiki/String_exploding .
- New string.split and string.join functions
- Conflict: [String_exploding http://love2d.org/wiki/String_exploding String_exploding]
- Compatible: String_extensions
- glob (lib)
- Status : aborted (seems useless)
- Goal: be able to support a string matching with glob pattern (like "*.txt").
- tablesort (lib)
- Status : Done, not released yet (still buggy)
- Goal: be able to make a for loop with keys on arbitrary/custom order.
- bench (lib)
- Status : Done, not released yet
- Goal: a simple way (in pur lua) to run n times the same function and calculate the average time elapsed per iteration. Usefull to compare performance of 2 differents versions of the same function.
- chrono (lib)
- Status : Done, not released yet
- Goal: run a start, some code, stop, see the time between the start and stop (in microseconds, milliseconds, seconds, ...)
Others
- english-french translation of documentation/tutorials/...
Forum
My threads
- symlink support and require usefull hack : http://love2d.org/forums/viewtopic.php?f=4&t=2896
- API discuss : http://love2d.org/forums/viewtopic.php?f=4&t=2884
- love.screen : http://love2d.org/forums/viewtopic.php?f=4&t=2888
- SDL button x1 and x2 : http://love2d.org/forums/viewtopic.php?f=4&t=2758
- thrusted loader : http://love2d.org/forums/viewtopic.php?f=4&t=2758
- love built-in changes : http://love2d.org/forums/viewtopic.php?f=3&t=2922
Bookmarks
- strong lib : http://love2d.org/forums/viewtopic.php?f=5&t=2893
- inspect lib http://love2d.org/forums/viewtopic.php?f=5&t=2879
- memoize lib : http://love2d.org/forums/viewtopic.php?f=5&t=2867
- TLfres lib : http://love2d.org/forums/viewtopic.php?f=5&t=2900
- cron lib : http://love2d.org/forums/viewtopic.php?f=5&t=2882
- lquery lib : http://love2d.org/forums/viewtopic.php?f=5&t=2570
- debug way : http://love2d.org/forums/viewtopic.php?f=5&t=2473
- testing framework : http://love2d.org/forums/viewtopic.php?f=4&t=2744
- testsuite with telescope : https://github.com/norman/telescope
- module discuss : http://love2d.org/forums/viewtopic.php?f=3&t=2542
- ascii colors : http://love2d.org/forums/viewtopic.php?f=5&t=3061
- about music : http://love2d.org/forums/viewtopic.php?f=3&t=2910
wiki doc TODO list
- Image format supported : http://love2d.org/forums/viewtopic.php?f=4&t=2888
- SVG not supported : http://love2d.org/forums/viewtopic.php?f=4&t=2758
- love.load : http://love2d.org/forums/viewtopic.php?f=4&t=2758
- translate wiki doc : http://love2d.org/forums/viewtopic.php?f=4&t=2757
- tutorials for beginners : http://love2d.org/forums/viewtopic.php?f=3&t=2921
- tutorial for cameras : http://love2d.org/forums/viewtopic.php?f=4&t=2895
My steps to learn lua and love
Personal reminder
- repair my 2nd computer and run the test on windows and linux
- Status : in progress