What are packs? (Baby, don’t hurt me…)

The younger of you may not get that reference.
Those that do may not appreciate it. 😛

Something that comes up really often for me is modpacks. Part of this is that Mystcraft is constantly inundated with modpack requests, but also because I interact with the community on this point. I enjoy providing tools and options to people building interesting packs.
So this post about modpacks will be to modders, not pack creators.

I think of modpacks as something akin to a remix. Taking things which already exist and arranging them to make something new. This is what I think a good modpack should be these days.*
Now, this squarely sets me as one of the modders who wants to build my mod(s) such as to allow easy remixing. Thus I provide lots of configs and options and IMC tools and try to make things as adaptive and adjustable as possible. I realize not all modders see things this way, and that some don’t want to allow for that level of customization. That’s really up to them. However, I would implore everyone to consider it.
You don’t have to make it as easy as a config option -IMC mechanics work well for modpack creators-, but allowing for mechanics to be added, tweaked, and disabled permits pack creators to produce even more creative things.

Some thoughts to consider:
You never can control how a user uses any software you write. Ever. Ultimately, how a user wishes to use what you have created is up to them.
If you are creating a mod, you are doing precisely this to someone else’s mechanics; you are modifying and extending the base game. Disallowing others to do that to what you have created is your right, but it is when we build on others’ work that the most interesting things occur. Letting others build on your work can lead to exciting things. Sometimes those contributions can be integrated into your work, and that saves you a lot of work!
Enabling remixing and control over how things work at any level helps build a stronger (,better, and more friendly) community. I know that the MC community is often… well, not as great as we’d like. The trick is to insulate yourself with the better of them (and ignore the rest). This helps with that.

Just my two cents on the topic. I use mods to produce the game I want to play. I like when those mods are balanced and interact well with each other, but sometimes they don’t do that out of the box.
Providing the tools and options to fix that balance to your community (not necessarily to average users, but to some level of the community) allows others to do that balance work for you and strengthens your community.

Cheers!

*There are the two cases of packs outside this. Packs for smallish communities, which I think should be private, and packs for media content creators, which I allow to be public so that streamers and YouTubers can let their audience play along.

Mystcraft Trello Board

Lots of posts in a short span of time, but everything kind of fell together at once. 😛

Mystcraft now has a (public) Trello board. https://trello.com/b/0iPcFEAy

I’ve gone through a a few iterations on it for a little while, and I’ve settled on a timeline-like format. The upcoming features are to the right, and past things are to the left. Older versions are archived.
I’ve been on this format for a little while now and found that it works well for me. I can quickly arrange things based on when I think I will get to them, structure larger arcs of development, and put features which depend on stuff after the things they depend on.
While it’s not strictly a timeline, in that sometimes a feature might get warped from a later list to suddenly being an active task as things come up, it helps give a general impression.

I’ve opened it up so that anyone may comment on it, and there is a voting system, so let me know your thoughts. 🙂
(Note that, if the public commenting should turn out to be an issue, I will just turn it back off and we’ll just discuss everything on the forums like we have been. :P)

Maven Repo!

(Forewarning: This post is mostly intended for other modders. It’s a cool thing and means neat stuff for the future, but the immediate applicability of it is limited to modders…)

Dev and API jars Mystcraft and LookingGlass are now possible to pull from a maven repo. maven.xcompwiz.com

Example GradleCode:

	repositories {
		maven {
			name "xcompwiz"
			url "http://maven.xcompwiz.com"
		}
	}
	dependencies {
		compile "com.xcompwiz.lookingglass:lookingglass:0.2.0.00:dev"
	}

Mystcraft 0.12.3

No LookingGlass build this week.

This Mystcraft release is centered around the trading system, which has been in a state of partial completion for a while now. Check out the changelog for what all that means and what else got thrown in. 😀

I’ve also finalized the maven repo for my projects. More info for that will be posted somewhere soon. 😛

Mystcraft is available from CurseForge.

Mystcraft Changelog

Mystcraft 0.12.2

No LookingGlass build this week.

This Mystcraft release was mostly bugfixes and compatibility handling for a few things.

I’ve been really busy with general travels and things. Haven’t been home since slightly before MineCon, really, so I’ve had limited opportunity to work on things. Should be returning to a “normal” schedule at this point.

Mystcraft is available from CurseForge.

Mystcraft Changelog

Using Trello

I’ve been experimenting with using Trello for Mystcraft for a little while now. Thus far, I’ve found it a good way it organize my TODOs, and definitely an improvement from my flat text sheets.

For those who haven’t seen it, Trello is a neat little web app for project management. It supports the creation of lists in which you create “cards” detailing different tasks (or “stories”) which need to be completed. It is modeled on the Kanban paradigm.

I’m still on the fence about the best way for me to manage the lists, though. I tried the “standard” arrangement and set my lists up in a Kanban-like system, moving the cards between lists depending on what I’m currently doing and what I won’t be doing for a little while.
However, I’m thinking about arranging the lists as release arcs, breaking up the lists into individual releases as I hit them. The main idea behind this is to get better relationships between the cards. Currently you can just link to the cards, but there’s not really a dependency system.

It’s possible, I think, to try and put all the things which would depend on a task inside the same card, but since I like to have pretty small tasks this results in not wanting to have large cards. I also like to detail things pretty well, and it’s hard to detail the checklist elements on a card. Now if there were sub-cards….

If anyone has any thoughts on this (particularly anyone who has used Trello) I’d love to hear them. I actually have been thinking of making the Mystcraft Trello board publicly accessible and opening it up for comments and things, so let me know if you are interested in that as well.

Mystcraft 0.12.1 and LookingGlass 0.2.0

I hope everyone has been happy with the baselining changes. I’ve not heard anything, so I assume no one had any complaints. 😛

Last weekend I didn’t release anything due to MineCon. No explanation needed there, I’m sure. 😉

I’ve nearly finished the initial version of Slidercraft, which should be fun. It’ll make for a good toy on Let’s Plays and video series, as well as a fun gameplay mode in general, I hope.
Part of that has been testing and building a number of things for realtime portal rendering and transition. The inter-dim portals are coming along nicely.
Unfortunately, that’s not quite here, yet.

What I have for release right now is some LookingGlass improvements. Particularly, I’ve improved the cleanup handling for views, so if your objects clean up properly (in terms of Garbage Collection) then the frame buffers used by the views will clean up too. This is mostly a modder focused improvement, but it will hopefully positively impact end-user performance.
I also fixed a bug where the current world’s entities would get muddled if you created a view to it. Should be alright now.

Mystcraft got an update as well, mostly to use the new version of LookingGlass.

One of the most exciting things for this set of builds is probably the inclusion of the API sources in the dev and API jars for both Mystcraft and LookingGlass. The dev jars will be available alongside the API jars from now on.
This means those using the APIs will get the javadoc and be able to read the original source code of the APIs. This was the original intent, but I messed it up, apparently. 😛
Note that is IS possible to use CurseForge as a maven repository, but it’s not great. You have to refer to the specific file you want to download. I’m trying to get a better location, but I’m in the middle of relocating my website and haven’t gotten any offers for places to upload to.

At any rate, I’m looking forward to all the fun stuff coming up! 😀

Enjoy!

Mystcraft is available from CurseForge.
LookingGlass is available from CurseForge.

Mystcraft Changelog
LookingGlass Changelogs

Mystcraft 0.12.0 and LookingGlass 0.1.2

OK, this week sees a whole bunch of new configs and a cleanup of the old ones. My config files should make a little more sense, now, but will need to be updated if you’ve made changes.

I’ve added a set of configs for the baselining system, even up to letting you turn it off and use some flat values from configs. I think I’ve simplified it enough that it will be doable from config.
In particular, I’ve allowed you the power of choice in which kind of profiling you prefer, and even allowed you to turn off the profiling in favor of hand-tuned values.

This should wrap up the profiling arc, and now I’ll move on to more fun stuff. 😀

LookingGlass got a bug fix. I’ve made good progress in various areas, but nothing is ready for prime time just yet. Almost to releasing the code.

Enjoy!

Mystcraft is available from CurseForge.
LookingGlass is available from CurseForge.

Mystcraft Changelog
LookingGlass Changelogs

Why the Profiling Exists (A quick history)

Sometime back (I can’t even place when) I was playing on FC2 and some stuff happened. I had a nice little house on the beach near the giant wand recharging tower, if you want to try and place it.
The event in question was incited by cpw, who created a Mystcraft age. This age had diamond ore tendrils.
While we were merrily collecting as many diamonds as we could carry in a world falling apart around us, cpw remarked, “So, XComp, how broken is your mod?”
I responded, “I’ll fix it.” I must have been channeling my inner Bill Cosby (Soaryn will get that joke).

At the time, instability was estimated by the symbols that did the generation using formulas provided by the modifiers they were using. This was really hard to balance in any kind of logical way and came with a large set of issues like the prediction being possibly wrong in either direction. I couldn’t simply make diamonds cause more instability, either, as that’d make the other issues worse.

Instead, I came up with a system for profiling the world as it really was, not how it might be. I built the age profiling system. This is not the baseline profiling system, which I’ll call baselining from now on (I’ll try, anyway).
The age profiling system is pretty nifty, but difficult to explain to people who don’t know code, so I’ll try it with a Minecraft imagery metaphore.
Imagine you have a world with a bunch of chunks in it. Normally we can’t see the chunks, but we know they are these 16×16 areas that load and unload and generate when needed.
Now, imagine all of those chunks slightly transparent. As if we’d made them holograms.
Now overlap them on top of each other.

It’d look a little weird, perhaps, but we’d quickly be able to see areas which were usually stone, or usually air, or might have trees. If we did this with thousands of chunks, we’d be able to see what range of blocks the diamond blocks usually show up in.

Mystcraft’s profiling system basically does that. It goes through every chunk we generate and checks each block in it, mapping it to our single transparency. It actually counts the number of times this relative cell was a solid block, or an ore block, or water, or whatever else we want to count.
This allows Mystcraft to say, “You know, this world has a lot more diamond than normal…” and the produce instability because of it, in a nice, logical way that’s actually pretty easy to balance.

The catch was, “what’s normal?”
About a week later I started playing on Forgecraft again. This was actually the beginning of the last time I played on FC2, I think. The one where we used the configs from the DW20 pack…
Turns out, someone had played with the vanilla ore distribution. Since Mystcraft was comparing the profiling data to vanilla’s normal ore distribution, it wound up making all ages on the server unstable. No one had bothered to test this in advance, so the DW20 pack users were all complaining they couldn’t get stable ages…

And so, I was tasked with fixing this too.
Now, because the profiling data was pretty complicated (and for a few other reasons besides) I determined to simply establish what was normal for the save and use that. Thus the baselining was born.
The baselining usues the profiling system, but it is actually more than that. What it does is it generates an extra dimension in the background; a pure dimension which we can determine is “stable.”
As the dimension generates, it gets profiled, same as any other Mystcraft age. We can then use this data to do the comparisons for “this world has a lot more diamond than normal” without worrying about the mod loadout and configs.

And then, there were more problems.
The baselining was actually pretty slow at first. I made a valiant effort and improved lots of things and had it running really smoothly for the most part, but I still got complaints. Apparently my four year old laptop still outpaces the standard hardware… Cool, I guess.
At this point the baselining runs pretty fast, so long as mods play nicely. Many mods that do generation don’t seem to understand how generation should work, and so they do things which make generation take many times longer than it should, but it still sorta seems to work.

It’s not enough. The top complaint I hear is “why does it happen for every world?!”
The two main reasons for this were that it made it possible to do the baselining in the background while you played and that some mods actually allow you to change the ore distributions per save…

I gave up and tried something new. Something experimental and something I don’t even like: I moved the profiling to happen when you start the game.
I’ll be clear on this: I hate this idea.

I’ve liked it even less since I released it. This system is different enough that it confuses too many mods. There is a crash on game start with bspkrsCore (he’s aware of the issue and accepted the fault) and sometimes the progress bar just doesn’t move. This means no chunks are generating. I have no idea why that is. Some mod is doing something, but that’s nothing to go on.

And now that’s the issue: the wait; it runs when things change; the conflicts with other mods.

Apologies if my tone comes across as irritated, but I’m tired; really tired; of this issue. Mystcraft was more fun when I could make it about the lore and not have to try and balance the darn thing.

With that explained, I’m currently trying to get feedback on how to move forward with it. I’ve made a topic on the Mystcraft Forums about this, and I welcome your input.