Posted by : CosmicDan Sunday, 17 May 2015

Things have been quiet here lately as I've a high workload at my day job and am very dedicated to it, so I thought it a good idea to share semi-regular summaries on what I've been working on; if only to remind any readers that I am indeed still alive and wheels are turning.


I've neglected posts on the subject of the original reason I decided to start this blog, so without further ado...

Minecraft (and related Java experiments)


I believe I mentioned this before to some friends on the Minecraft Forums (sorry guys, I've missed you!) that my main interest in modding and hacking Minecraft is academic. However, I do still plan to (and have been working on) modifications for entertainment purposes.

  • ModShell development is indefinitely suspended due to an unresolved blocker that sadly remained unanswered on Stack Overflow. However, it may eventually be converted into a Turbo Tools plugin (see it's section below) depending on how far and quickly Microsoft/Mojang go with their SDK/API. It is very low priority, but a great example of a free plugin for Turbo Tools so still of personal interest to me.
  • Imperium itself, as before, has had zero direct development. I have, however, been working on other things which are essential prerequisites to my vision of the Imperium mod. No spoilers though, sorry ;)
  • CosmicLib is my general-purpose Java library for shared code among my projects and it's growing quite complicated. It is mostly Minecraft orientated for the moment, but it deserves it's own section, below.


CosmicLib


As said, this is my general-purpose Java library that is currently used in my Minecraft work, but also expanding to Android specific things. This involves not one single library, but rather a "Core" library which is dependent on Java base classes only, and additional platform-specific libraries that depend on that core. These are all currently private due to their experimental nature (and possible licensing/permission issues).

CosmicLib-Core

  • Highly-optimized trigonometric functions, mostly written by other geniuses but tested, benchmarked and modified/customized by myself;
  • Builders and helpers for heuristic analysis and cataloging of simple multi-dimensional spaces (e.g. Minecraft worlds); effectively an "AI" that can understand and recognize the features of simulated environments in the way a human would (details soon). This is the practical implementation of the "Topographic Profiler" I've ranted about on MinecraftForum, only better. Rather than hooking into Minecraft's procedural generation to "cheat" at building humanized-data of the world, it's more like "procedural recognition" which allows it to be used outside Minecraft and be much more powerful (and even more complicated). This is not designed to be a full-blown AR sensor framework or anything like that though.
  • "CosmicEngine" (working title); a platform-independent layout and window manager, with the possibility of expanding into a full-blown 2D render engine (e.g. sprites, motion, physics/collision, etc). Designed to work with both Minecraft and Android sub-libraries (see below);
  • Various other tid-bits and nifty things that make Java programming less repetitious, and some other secrets ;)

CosmicLib-Minecraft

  • A butt-load of helper functions and wrappers for Forge modding, designed to reduce the need to randomly flail around in Forge's complicated source tree for something that may or may not exist (consider it a practical alternative to documentation, or an "API overlay" if you prefer) along with extensive error handling and improved performance (namely loading times). This will not only be a time-saver for experienced Java developers, but could be a nice alternative to MCreator for those who are new to Java;
  • CosmicEngine entry points and additional helpers for Minecraft-specific GUI design, along with lwjgl "bindings" for actually displaying the GUI;
  • "TileGhost" (working title) object and associated registery/ticker. An alternative to TileEntities that are not realtime-priority and lacking some other features (e.g. support for a dedicated render object), but far easier on resources overall. In other words, something that goes in-between a Block meta/state collection and a TileEntity;
  • Some new AI tasks, mostly for enhanced NPC and passive-mob mechanics;
  • Related to the first point: various "registrars" that act as a central delegate (i.e. each one a singleton) for mods to completely replace some areas of vanilla logic  (e.g. changing AI tasks in vanilla mobs) on a one-time basis rather than each mod running it's own expensive loop (faster loading and better error control);
  • "RenderTransformer". Another singleton helper, this will assist modders in applying motion and physics to blocks far beyond the existing capability (e.g. falling sand and gravel). This is a core part of my planned "Timberrr!" mod, where trees fall over naturally when chopped;
  • Some other experimental things that are too immature to worth mentioning.

CosmicLib-Android


Not much is confirmed for this, except for CosmicEngine entry points and helpers for those who find the Android layout manager lacking, and of course with their OpenGL "bindings" as dictated by AOSP's OpenGL-in-Java system. There are some other things, but they're currently unique to my professional work (closed source) for the moment and I'm unsure if I'm willing to make them public.


Well, that's basically it for Minecraft. I had a lot of other ideas for mods, some may recall me ranting about the ten or so different ideas I had on MinecraftForum - feel free to ask me about them in the comments!



TurboTools


I was hoping to wait for an initial release before announcing, but an ETA is unknown, and I feel that the future home of ModShell should be introduced.

TurboTools is the conglomeration of my past 15 years in Windows-based development and production. It is a general-purpose, modular framework designed for RAD/prototype development, automation, scripting, and general power-use. Nerd candy, basically. The overall goal is to assist with and improve the productivity for various computer-designated roles.

Currently written in C(++), it contains a lot of patented and non-free code that was written by or shared with me when working with previous companies. I have been adding onto it and expanding it for years, but until now it's been unnamed and used exclusively by myself, and is being re-written from scratch to be 100% open source.

Due to it's incredible ease of use and speed, it will be re-written in AutoIt - a scripting language with direct access to the Windows API. TurboTools itself consists of two main components:

  • TurboShell is a GUI/CLI "hybrid" where most of the user input and realtime processing happens. At first glance it looks like a fancy GUI wrapper for the Windows Command Prompt, and under the hood it is - albeit with many powerful and time saving functions (without being complex) and plugin support for custom commands, behaviors, and possibly alternative interpreters. It can also act as a complete replacement for Windows's default Explorer shell, providing a CLI that acts like a standard command prompt and a GUI that lists files/directories, and both remain synchronized to the same working working directory (multiple TurboShell windows can be open simultaneously).
  • TurboServer is the host "server" app that provides the back-end functionality for TurboShell and plugins, managing automation and related background tasks. It sits in your system tray (or notification area as they call it these days), also providing useful shortcuts and helpers for making your Windows workstation more productive for whatever you do - which of course are also extensible via plugins.

I will be releasing several plugins myself of course, most of which will be free. I have also considered the possibility of writing some commercial plugins for specialist tasks, though I'm not sure if that's a worthwhile investment for me as of yet. One example of a plugin is a "parser" for traditional batch files that could replace specific functions with GUI controls and popups and other such "rich" features that are impossible in traditional CLI's.





Well, that's that then. If you've any questions or comments, let me know. Now it's back to work for me :)

{ 5 comments... read them below or Comment }

  1. I've got nothing useful to tell you except welcome back! ;3

    ReplyDelete
    Replies
    1. Thanks mate :)

      I've been active on the Mod Develop forums lately, namely asking about a few technical things in Forge for 1.8. I'm working on a library that is able to "build" an entity + models from block(s) you feed into it, and also provide helper methods for animating them. This library will be opensource and will power the "Lumberjax" mod I'm working on, which is that one where you chop down trees and they actually fall over :D It's going well so far and I hope it will be used by other modders for things I can't yet imagine!

      Delete
    2. That is cool, I really like these instant tree chopping mods but they are just weird.. One second there is a tree there, in the next : POOF! Tree's gone and it is raining saplings and logs :P

      Delete
    3. Yeah exactly haha. Fast Leaf Decay obsolete! There are a couple of execution obstacles I need to overcome though, for example - should it only "enable" with a new special Lumberaxe tool, or work with any axe but use my own tree detection logic (i.e. logs with leaf on top)? I'll probably go with the latter to start with, and maybe add an option to toggle between the two. We'll see.

      Delete

Copyright © CosmicDan.com ~ Powered by Blogger - MetroMinimalist base design by Djogzs