GithubHelp home page GithubHelp logo

ccbox's People

Contributors

crazedprogrammer avatar lustyn avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ccbox's Issues

Cross-platform support

The goal is to make CCBox run on multiple lua-based platforms, like Löve2D, Riko4 and even PUC Lua with something like luaposix.

In order to do this, all functions that are provided by CC need to be replaced with a platform-specific or platform-unspecific implementations.

To-do list:

  • Create a system for detecting platforms and choosing implementations based on it.
  • Create a platform-specific runtime system.
  • Create an event system for handling event queues and timers.
  • Implement temporary file systems.
    • Load/store temporary file systems to an archive format.
  • Create a terminal emulation layer.
  • Implement components for another platform.

Roadmap for 1.0

  • Clean up computer creation code, especially the parts that deal with multiple implementations depending on the platform
  • Write a JSON table parser so that there's no dependency on a third-party json.lua library
  • Improve term performance significantly so that full-screen games work without slowdown
    - Improve idle CPU usage Not possible without compromising on response time with the current "collect user input for x seconds" method. Idle CPU usage is around 5% (one core, Ryzen 5 1600) with both Lua and LuaJIT.
  • Useful defaults for CLI interface depending on platform
    - Add single-file mounts Not a proper solution to the "mounting real files on the PUC platform" problem. There is probably a way to read/write files and directories with only the POSIX tools. Not strictly necessary for 1.0.
  • Make the platform-specific methods and platform detection methods generic and conceptually decoupled from the main code. In this way, support for a new platform can be added without touching the base code.
  • Implement fs.find
  • Implement alphanumeric keycodes
  • Implement modifier keys if possible
  • Handle SIGTERM signals just like SIGINT
  • Flush filesystem on SIGINT
  • Handle mouse scroll events

Compatibility improvements:

  • Fix crash in BBCards by Bomb Bloke (doesn't crash anymore, but needs a monitor to work)
  • Fix crash in Minesweeper by GopherAtl
  • Fix crash in Doom by Xelostar
  • Fix timing issues in QuickDraw by LDDestroier
  • WONTFIX: Fix crash in BBTetris by Bomb Bloke
    This requires a source translator. LuaJIT, Lua 5.2 and Lua 5.3 don't provide the arg table for vararg functions.
  • WONTFIX: Fix crash in CCSand by CosmoConsole
    This requires a source translator. LuaJ interprets 16f as 16, whereas the normal Lua variants throw a syntax error.

Terminal-specific issues:

  • Fix mouse controls not working in urxvt.
  • Fix backspace not working in xterm.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.