Welcome Guest ( Log In | Register )

[ Big| Medium| Small] -



Post new topic Reply to topic  [ 5 posts ] 
    aphadeon
  Sun Dec 24, 2017 6:51 pm
1987-2023
User avatar
Staff

Generic Townsperson


Image
Clockwork Engine
Version: 0.1.0


Index

    01 - Index
02 - Introduction
03 - Features
04 - Known Issues
05 - Plans
06 - Alpha Warning
07 - Built-in Functions
08 - License
09 - Changelog
10 - Download



Introduction

    Clockwork is a little project of mine. I often end up using RPG Maker for non-rpg related projects simply because I prefer it to heavy-handed IDEs, and because it offers a pretty solid starting point. That said, I spend most of my time these days working around the limitations of RPG Maker rather than enjoying the benefits it provides, simply because that's the direction I have taken as a developer. So, I decided to make a tool for myself, and while doing so, realized I might not be the only one who finds it useful.

Making a project using Clockwork? Tag it with [Clockwork]!


(Return to top)


Features

  • Create commercial projects - no problem!
  • Easily create multiple projects.
  • Templates allow for creating varying types of projects (You can create a new template by copying an existing directory in {installdir}/templates/ and customizing its contents. The project file must remain named project.cwp, as the editor has to modify this for new projects.)
  • Uses Ruby (via a lightweight runtime, mruby) for scripting
  • Set the output .exe filename.
  • Supports easy switching between release and debug builds of your project
  • Headless support - use the --headless commandline switch to run in headless mode. In headless mode, any core library calls that would result in a windowing or UI action are either ignored or rerouted, while remaining logic is unchanged. Useful for running your software in, for example, a dedicated server mode.
  • Debug builds provide a console, and can be checked for in your scripts to enable additional functionality
  • Your Ruby scripts are precompiled to bytecode, script source is not distributed with your project's output
  • Thanks to precompiling, you are made aware of syntax errors any time the project is built, rather than at runtime.
  • Script sources are maintained as loose .rb files, for compatibility with source control software
  • Script sources are named and ordered, and this order is respected at runtime.
  • Project file format is human-readable JSON.
  • You can hover a script to see its filename (as opposed to script name).
  • Your project's 'output' folder is entirely rebuilt every time you hit 'Go'. This ensures the output remains clean, but this will remove any files you placed in the output directory, not just the ones the project manages. Specifically, this was done for myself because I am not sure how to track files removed from the project, and didn't want orphaned files to accumulate.
  • As a companion to the above 'feature', files in your project's "files" directory will be copied to output every time you hit 'Go'. This is the appropriate place to add content files which your project depends on.
  • Very simple interface

(Return to top)


Known Issues

  • The editor currently does not validate filenames for the output or script filenames. Please be careful with these for the moment - I am working on a decent method to validate them (the stdlib's provided feature for this accepts things that I don't find acceptable, e.g. it finds a url, or even "::::::" to be valid filenames).
  • Save, build, and run are currently all implemented by the same button 'Go'. Eventually there will be ways to do these things separately.

(Return to top)


Plans

  • Provide a game-friendly library of features (a rendering setup, and standard things like files, networking, curl, physics, images)
  • Provide a runtime for at least win/mac/linux (in a way which sets up deployment of all platforms with a single click)
  • Super secret awesomesauce (seriously you'll love this but it'll be a minute)

(Return to top)


Alpha Warning

    If you haven't got the idea yet, this is a very early alpha. It is not recommended to use this for production code yet, but I am working hard to get it there. If you have feedback, please share it because the more dialogue we can get going the faster I'll be comfortable marking it as production-ready. But as it stands, I'm not responsible if this thing causes your computer to explode (but please file a bug report for that should it happen).

(Return to top)


Built-in Functions

    DEBUG
      This is a global boolean constant, which is set to true if you are running your project in debug mode, and false otherwise.

    HEADLESS
      This is a global boolean constant, which is set to true if the commandline switch --headless has been provided, and false otherwise.

    msg_box
      This pops an OS-native messagebox. If used with a single parameter, that parameter will be the message. You can optionally specify a second parameter to provide a specific caption for the messagebox.

    I did not exclude any included gems from mruby, so whatever it ships with you should have access to. If you really want more gems, let me know and I can look into including them.

(Return to top)


License

    Summary: Producing commercial projects with Clockwork is fine. Your project's contents (including scripts) are yours to do with as you like, I claim no ownership of any kind over them. Your rights regarding the runtime binary, detailed in the agreement, are very permissive - I merely retain ownership of the intellectual property to ensure I can continue to develop and distribute it myself, and disclaim liability for your use/distribution of it. The editor remains my property, which you are permitted to use to make stuff with. The EULA does not cover third party dependencies- I will try my best to keep you informed of any requirements they might have. I'm not responsible if you do anything crazy - everything is given to you as-is. This summary is not an extension of or substitute for the license agreement, please read it - I've tried to keep it as brief as possible.

    License Agreement


    The runtime uses the following libraries, please ensure that you comply with their license terms (trying to stick to only permissive-licensed dependencies):
    • mruby
    • all the ruby gems that ship with mruby source are included
    • the standard windows system libraries (for the windows runtime) like kernel

(Return to top)


Changelog

    v0.1.2 - Added headless support
    v0.1.1 - Added 'Rename...' to script list context menu; added eula.txt
    v0.1.0 - Initial release

(Return to top)


Download

[/list][/list]

(Return to top)


_________________
Image ImageImage


Top Top
Profile      
 

    ZenVirZan
  Mon Dec 25, 2017 2:17 am
very undead
User avatar
Sponsor

Inept Evil Stooge

Location: land of the snags 'n tracky-dacks
dang that's t i t e
i'll definitely be checking it out soon, looks really good
glad you included a ruby bytecode conversion in there

_________________
Image


Top Top
Profile      
 

    aphadeon
  Mon Dec 25, 2017 2:39 am
1987-2023
User avatar
Staff

Generic Townsperson
Really glad you think so! There's not much out of the box functionality just yet - but that can change quickly as I expand the core library. At the moment it's about just doing the basics but doing them right, which is quite a task on its own. I also want to make it suitable to a variety of project types.

Also, don't confuse precompiling with encryption. I actually have plans to build in some encryption soon, but at the moment strings are clearly visible using a hex editor, and the bytecode itself can be reversed with some work (comments, file separation, and whitespace are entirely omitted, however). Precompiling is mainly for that slight performance boost, and makes reverse engineering of your projects slightly more difficult as a freebie, so no reason not to :D

Edit: Added a headless option. Could be useful if you want to make your server in the same IDE, or integrated in your game. Or if you just need a headless app and choose to use clockwork for it. Will probably expand this to use an actual separate binary eventually, as that could be a much smaller binary, potentially.

_________________
Image ImageImage


Top Top
Profile      
 

    ZenVirZan
  Tue Dec 26, 2017 9:38 am
very undead
User avatar
Sponsor

Inept Evil Stooge

Location: land of the snags 'n tracky-dacks
oh im aware that its no encryption, it just looks better than a directory or archive full of .rb files lmao

_________________
Image


Top Top
Profile      
 

    aphadeon
  Tue Dec 26, 2017 8:46 pm
1987-2023
User avatar
Staff

Generic Townsperson
After running into some issues with mRuby (it's fast, but it's also incompatible with a /lot/ of existing ruby scripts, including a few I'd very much like to use personally), I've been looking into the official Ruby runtime. Apparently since YARV interpreter was adopted as the official runtime, it's performance is actually quite comparable (and it definitely starts up faster). I expect the next update to include a basic framework to get a window and a sprite displayed, using OpenGL on the backend. Should be ready within a couple days.

This does mean we'll be losing precompiled scripts, as precompiling using the official Ruby interpreter is not portable from one machine to another (but should be in the future). That said, I have an alternative in mind, so don't panic.

Edit:
Making good progress on this. I've come up with a basic archive format for scripts, which does deflate them (and do a couple other things). Not quite precompiled, but neat and tidy and I'm satisfied with it. (Still not encryption! I mean... it is, but very weak at this point. Proper encryption of assets will come later.) Got all my dependencies building, so that I have engine-side access to all the basic stuff like zlib/GL/ruby/json.

I have to say, as I get more comfortable with it, really liking the more recent changes to the C++ standards. My code looks a lot more modern than it used to, for sure. I still get caught off-guard by changes I wasn't aware of, little deprecated things here and there. But I'm generally quite happy with the modern alternatives.

Got Ruby setup using the modern interpreter (YARV). Some basic testing shows that at least under primitive circumstances it's actually faster than mruby on Windows. Start time is the metric that is the most noticeable - YARV fires up instantly whereas mruby had a good half-second+ delay (the difference could potentially become more noticeable with a larger scriptbase). Code compatibility is much better.

Next update will bring a messier output folder (should only be temporary), but a whole slew of actual useable features.

_________________
Image ImageImage


Top Top
Profile      
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 5 posts ] 


Who is online

Users browsing this forum: No users and 18 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

We are an independent, not-for-profit game making community.
Homepage
Board Index
About Us
Downloadable Games
Free Browser Games
Games in Development
RPG Maker Support
Game Maker Support
Construct 2 Support
HBGames the eZine
Advanced RPG Maker
Site Announcements
Powered by phpBB © phpBB Group