GSoC 2018 - Frameworks and content

asie

New Member
#1
Hello! In this thread, I will be keeping you up to date on progress with the frameworks/content project for Terasology.

Project summary

Summary: The initial plan of realizing the plan to add new frameworks and content to Terasology was to provide them as a way to power a sandbox-themed, survival-esque gameplay template for others to extend on. Due to engine limitations at this time, the plans have shifted somewhat, as not all parts of my initial vision could be realized in the engine as-is, and the time necessary to implement missing functionality would far outgrow the duration of GSoC. Frameworks and content will remain the focus of the project, however - the primary "target" is to develop a complete "virtual machine computer" system in Terasology while evaluating existing frameworks and/or adding new ones, with some secondary "targets" to come.
Mentors: Cervator, michaelpollind, SkySom, josharias
Student: Adrian "asie" Siekierka

Where to find me

IRC : asiekierka, #terasology @ Freenode
Slack : asie, #gsoc-frameworks
GitHub : asiekierka (repository TBD)

Project updates

GitHub Project Board : Here!
Blog : For the time being, in this thread, as I don't really have a separate blog that is sufficiently well-maintained at this time. I will be providing major updates at a rate of no less than one per week (as part of the report) - that is, if something important/interesting shows up, a post will be added outside of the usual report.
Stream : If circumstances allow, I hope to occassionally stream my development live on my Twitch account. I will also try to be available to answer questions there, though development can be focus-intensive!
Playtests : As the computer system is being developed in a way which makes it embeddable for other JVM games in addition to Terasology, it is likely it will miss the June playtest. However, I hope to have something playable for the July and August playtests!
 

asie

New Member
#3
Weekly Report, Week 1

What have you achieved in the last week?

This! To be specific, a minimum viable implementation of an OpenComputers-compatible sandbox in Java. There's still a long way to go in terms of cleanup and abstraction for the "fantasy computer simulation library" I have in mind, but being able to work based on a concrete, functional example is very helpful.

What are you currently working on?

Improving the OpenComputers emulation layer (as I said, minimum viable) and planning out a more abstract way to formulate the various components and interfaces that make up a "fantasy computer" in order to create a library which can hopefully flexibly accomodate a lot of them.

What problems are you currently facing?

Designing abstractions and systems isn't easy, especially if you want to have them be at least somewhat future-proof.

Is anything blocking you from making progress?

Not at this moment.

List of PRs and opened/closed Issues

Not strictly PRs or issues, but, as JNLua (the native Lua<->Java interop library) hasn't been officially maintained since 2013 nor had a general-purpose unofficial fork, I have begun work on one for Terasology: https://github.com/MovingBlocks/JNLua - right now, it mostly combines a few bugfixes from the OpenComputers project's version of JNLua with an improved Lua 5.3 port, as well as support for Eris - a Lua 5.2+ port of Pluto, which is a patch allowing serialization and deserialization of virtual machine state - something very useful for a "fantasy computer" module.

The library for "fantasy computers" itself will, unfortunately, be confined to my internal workspace for a few more days - shouldn't be long though!
 

asie

New Member
#4
Weekly Report, Week 2

What have you achieved in the last week?

I made the fantasy computer library (Kallisti) capable of using a JSON-controlled simulator for testing the machine logic outside of a game engine. I also made OpenOS work far better than it used to, and pushed the whole thing on GitHub: https://github.com/MovingBlocks/Kallisti

What are you currently working on?

Sandboxing, persistence, synchronization. In an unknown order.

What problems are you currently facing?

Nothing in particular.

Is anything blocking you from making progress?

Not at this moment.

List of PRs and opened/closed Issues

https://github.com/MovingBlocks/Kallisti is a new repository! With code!
 

asie

New Member
#5
Weekly Report, Week 3

What have you achieved in the last week?

Most importantly, refactoring the graphics rendering logic for server->client synchronization in the future. Also, minor improvements across the board to JNLua and Kallisti, including buildsystem improvements to JNLua, integration of the memory limit patch, etc.

What are you currently working on?

I've yet to port over (no real way to do it through reimplementation, due to how specific it is) the persistence logic from OpenComputers to Kallisti. After that, it's time to work on documentation and also take up some minor backlog projects (related to Terasology content, such as finishing the barrels!) as I'm a bit ahead of schedule.

What problems are you currently facing?

My schedule has become a mess. But that will end in two weeks or so. Until then, scheduling work is a tad complicated.

Is anything blocking you from making progress?

The schedule isn't strictly blocking me, but it is a hindrance.

List of PRs and opened/closed Issues

I've opened one on JNLua, but that's more "a note to remember for post-GSoC maintenance ideas/stretch goals". Mostly commits to the two projects.
 

asie

New Member
#6
Weekly Report, Week 4

What have you achieved in the last week?

Cleanup and communication. Creating diagrams documenting the planned and implemented architecture of Kallisti, bugfixes in Kallisti's OpenComputers logic, preparation for implementing within the scope of the Terasology sandbox, communicating with mentors, as well as rearranging the schedule to match new developments. In addition, taking care of the "backlog" (evaluating the state of other Terasology contributions I worked on during the bonding period and beginning of GSoC and wrapping up the pull requests).

What are you currently working on?

After evaluating my schedule and work to date, I've decided to start implementing Kallisti inside Terasology a bit early. However, there's nothing to show yet - most of the work has been in examining how to best translate Kallisti library concepts to Terasology engine logic, some code has been written but not a whole lot yet.

What problems are you currently facing?

I accidentally got rid of my barrel code! I'll have to rewrite it once the computers work.

Is anything blocking you from making progress?

Schedule hindrance, but this should end next week. Other than that, integrating JNLua and Kallisti into the build system isn't strictly blocking me yet, but might start to soon.

List of PRs and opened/closed Issues
 
#7
Weekly Report, Week 5

What have you achieved in the last week?

Not failed university.

No, don't worry, just kidding - I decided to do other minor touch-ups, though not many as I'd have liked to due to an unlucky combination of four exams occuring in the span of this week. On the JNLua front, I migrated it over to use 64-bit integers where applicable (for better Lua 5.3 support!) and cleaned up some of the JNI hooks; on the Kallisti front, I fixed a bug in OpenComputers emulation and added some more Javadocs.

What are you currently working on?

I want to finally get Kallisti working in Terasology, of course! The deadline is roughly July 5th, as to make it into the month's playtest.

What problems are you currently facing?

None.

Is anything blocking you from making progress?

Scheduling! Scheduling wasn't very good. But I'll make up for it with the upcoming few weeks.

List of PRs and opened/closed Issues

Some commits on JNLua and Kallisti, as well as the usual updates on the GitHub project board, but not much beyond that.