Difference between revisions of "User:TsT"

(assume MMO goal)
(cleanup + hua)
Line 12: Line 12:
 
** Status : in progress
 
** Status : in progress
 
** Goal: Provide a Löve and LUBE compatible interface on server side to support (massively) multiplayer network games.
 
** Goal: Provide a Löve and LUBE compatible interface on server side to support (massively) multiplayer network games.
** Require: ngix (see openresty.org) + luaJIT
+
** Require:
** server side :
+
*** server side :
 
*** + nginx ([http://openresty.org openresty.org])
 
*** + nginx ([http://openresty.org openresty.org])
 
*** + [http://openresty.org/#LuaNginxModule lua support] ([http://openresty.org/#LuaJIT luajit also supported])
 
*** + [http://openresty.org/#LuaNginxModule lua support] ([http://openresty.org/#LuaJIT luajit also supported])
 +
*** + hua: my hardened modular lua approach
 
*** + faked-cgilua-rpc-support
 
*** + faked-cgilua-rpc-support
 
*** + lua-rpc-server [https://github.com/luaforge/json/blob/master/trunk/json/rpcserver.lua lua json rpcserver part]
 
*** + lua-rpc-server [https://github.com/luaforge/json/blob/master/trunk/json/rpcserver.lua lua json rpcserver part]
 
*** + json support : [https://github.com/luaforge/json/blob/master/trunk/json/json.lua json in lua], [http://www.kyne.com.au/~mark/software/lua-cjson.php faster C json], [http://www.eharning.us/wiki/luajson/ lua json over LPEG] ... see also [http://www.json.org/ json.org] [http://www.kyne.com.au/~mark/software/lua-json-performance.html benchmarks] [http://www.kyne.com.au/~mark/software/lua-cjson-manual.html manual]
 
*** + json support : [https://github.com/luaforge/json/blob/master/trunk/json/json.lua json in lua], [http://www.kyne.com.au/~mark/software/lua-cjson.php faster C json], [http://www.eharning.us/wiki/luajson/ lua json over LPEG] ... see also [http://www.json.org/ json.org] [http://www.kyne.com.au/~mark/software/lua-json-performance.html benchmarks] [http://www.kyne.com.au/~mark/software/lua-cjson-manual.html manual]
 
*** + love support [https://love2d.org/forums/viewtopic.php?t=230 LUBE server]
 
*** + love support [https://love2d.org/forums/viewtopic.php?t=230 LUBE server]
**** over tcp customized protocol ...
+
**** over custom protocol ...
** server databases :
+
*** server databases :
 
*** + redis (with [http://redis.io/commands/eval lua and json support])
 
*** + redis (with [http://redis.io/commands/eval lua and json support])
** client side :
+
*** client side :
 
*** + ssl or https support (...)
 
*** + ssl or https support (...)
 
*** + keep-alive support (...)
 
*** + keep-alive support (...)
 
*** + love support [https://love2d.org/forums/viewtopic.php?t=230 LUBE client]
 
*** + love support [https://love2d.org/forums/viewtopic.php?t=230 LUBE client]
**** over tcp customized protocol ...
+
**** over custom protocol ...
** OLD:
 
*** try with simple http request
 
*** create a 'http' socket type for LUBE (client)
 
*** https support
 
*** keep-alive support (hack the open/close socket to keep it open, see 'create' function)
 
  
  
Line 41: Line 37:
  
 
* [http://love2d.org/forums/viewtopic.php?f=4&t=2883 fakelove]
 
* [http://love2d.org/forums/viewtopic.php?f=4&t=2883 fakelove]
** Status : in progress
+
** Status : frozen
 
** Goal: Build a compatible lua environment in pure lua
 
** Goal: Build a compatible lua environment in pure lua
  
 
* luajail and lovejail
 
* luajail and lovejail
** Status : in progress
+
** Status : frozen
 
** Goal: made a secure (jailed) environment for running löve's games.
 
** Goal: made a secure (jailed) environment for running löve's games.
 
** TODO: test the crack*.love attacks [http://love2d.org/forums/viewtopic.php?f=3&t=2541 see this thread]
 
** TODO: test the crack*.love attacks [http://love2d.org/forums/viewtopic.php?f=3&t=2541 see this thread]
Line 60: Line 56:
  
 
* gameconf (lib)
 
* gameconf (lib)
** Status : in progress
+
** Status : frozen
 
** Goal: having easy function to manage game settings
 
** Goal: having easy function to manage game settings
 
** (FIXME: I don't remember what exactly but I have part of code about that...)
 
** (FIXME: I don't remember what exactly but I have part of code about that...)
  
 
* LUSE : Löve User Settings Enforcer
 
* LUSE : Löve User Settings Enforcer
** Status : in progress
+
** 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.
 
** 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.
  

Revision as of 18:06, 23 October 2012

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


  • 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 ?
      • ...
  • 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

  • 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


Currently done (not yet released) :

  • 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

Bookmarks

wiki doc TODO list

My steps to learn lua and love


Personal reminder

  • repair my 2nd computer and run the test on windows and linux
    • Status : in progress