Posts Tagged Tools

I haven’t played Klei’s Don’t Starve Together in quite a while, but there was an update recently which got me thinking about my DST crafting tool. With all the new additions, my data’s bound to be out of date. And even if I update it, that doesn’t really solve the problem, only delay it until the next update.

With my Conan Exiles data tool, I pulled the data directly from the game files – which I could access thanks to their modding support efforts.

Don’t Starve Together supports modding. I’ve even made mods for it. Could I do something similar there? Could I retrieve the data directly from the game files?

If I could, that’d sure help solve the issue.

Turns out I could.

Don’t Starve Together stores its data in Lua, XML, and Tex files, packaged into zip archives. So it’s not overly difficult to read the data from those files. It’s slightly more difficult to extract it in a usable format – many of the definitions reference (and arithmetically modify) other definitions.

But now I have a script for that.

So next time there’s an update, I should just be able to run that script to refresh my data. Here’s hoping.

Logipar – an open source logic parsing library

Logipar, pronounced Lojipur (and soon you’ll see why), has a history.

It always starts out like this: I’m working on a project and it has some form of filter box – where you can type, and the results shown will be limited to those relevant to what you’ve typed. So you can type “cat” and it’ll show you all cats.

That’s easy enough. But then I want to be able to match multiple things simultaneously – to see all the cats as well as all the dogs.

Still easy, I normally split on commas – “cat, dog” would show all cats and all dogs.

And here is where things get troublesome. Sure, I can list all the cats and all the dogs, but what if i want to list only results that are both cats and dogs.

Okay this example is starting to break down. Where I’m going with this is logic parsing. Splitting on commas, I have to decide whether to join them with a logical OR (show all the cats as well as all the dogs) or with a logical AND (show only results that are BOTH a cat and a dog).

And sure, I can pick one or the other, but what if I want the option to use either?

So I made Logipar. An open source library for parsing logic strings. With Logipar I can type “cat OR dog“, or I can type “cat AND dog“. And it’ll parse that logic for me.

Logipar works in multiple languages, which is convenient because I work in multiple languages. Now to go back and add it to all the various tools I’ve ever written. JK, I probably won’t do that.

But all future projects.. That’s a different story!

You can use it too, if you want, I mean. No pressure.

Cat breed data

Having built Logipar, I wanted to create a demo for it. To identify any obvious bugs, sure, but more to better convey what Logipar does and is capable of.

For that, I needed some data. And the first thing that came to mind was cats.

When I went looking for a cat breed dataset, I found nothing. Sure, there were some websites with breed data – but they weren’t great. Fields would randomly be missing, or displayed in completely different ways.

I’ve been playing a lot of Conan Exiles lately and it’s pretty neat. But I’ve come torealize one of the best parts of a video game is making supplementary tools to aid in its play. Herein chronicles my Conan journey in that regard:

What started as a co-op session quickly descended into madness. In co-op you’re tethered to the hosting player, which can get strange. So we spun the world off into a locally hosted private server. Which proceeded to migrate from location to physical location.

The Conan world progresses as long as the server is running. Nobody has to be in it. Things happen. Possibly terrible things. As a self-described coward, that seemed somewhat less than ideal.

I didn’t want to leave it running at all times, but had no way to stop it (or more importantly) start it, once it was out of my direct control. So I wrote a c# server controller, which is also its own webserver, and exposes a page to control the server. So any of us can turn it on or off, etc. Everything worked fine until a new version of one of the mods was released. Now it updates those (and the game) as well.

Now to frantically start and stop the server to see if anyone notices.

Everything was going fairly well until I hit level 60, when all of a sudden raising the level cap started to look rather alluring. But there are so many level cap mods. I couldn’t decide which to use. So instead I exacerbated the problem by making my own. It’s called MoreLevelsPls. Now we have until level 250, scaling at approximately the same rate as prior to 60.

y ≈ ⌊86.4023x3 - 129.8326x2 + 61.0945x - 27.7356⌉

It sure seems to work.

Once you make level 60, new opportunities open up. You can make a slew of armours and weapons previously unavailable. Unfortunately, the information available on them, in game, is rather lacking. And they can be costly (in resources) to make.

Soon we were scouring the internet for information on armour and weapons – but nothing really worked the way we wanted. So I made a quick Conan data tool based on the game’s items list. It doesn’t include DLC, but what it has you can filter and, more importantly, sort.

I’ve been playing Don’t Starve Together lately, and it’s awesome. There’s a constant sense of pressure imposed by the passage of time, days turn to night, a mild Autumn to bleak Winter. It makes any wasted time seem at worst dire, or at best mildly frustrating.

There are so many items you can cobble together, with twigs, bunny-flesh, and the like. At least 144, by my count. But unless you memorize their positions and ingredients, you’re going to waste a lot of time searching through categories for some item you’re sure you’d seen but just can’t seem to find.

I, myself, often kept a wikia tab open on my secondary monitor. But as I’m sure you’re aware, Wikia is slow and prone to annoying ads blaring sound this way and that. And even so, didn’t provide an ideal interface for that sort of thing.

I wanted to type in “charcoal” and immediately see what I could make. Or “crock pot” and see what I needed. Or even “science” to see everything that’s in that category.

The What can I make page is where I spend most of my time. The What do I need page is for those situations where I’m starting a new game, and know I want to create, say, 2 crock pots and 1 bird cage. It’ll tell me everything I need to collect to fulfill my crafting dreams.

If you find anything that doesn’t work, let me know, I haven’t tested it all that much.

At some point late last year I decided thefamilywishlist.com should have a secret Santa tool. As useful a feature as it may be, I couldn’t decide on the details of integration. And as most of you know without a clear idea for a solution or interface, it’s easier to just put a feature off. There are just so many potential complications.

So put it off is what I did. However, I confidently marked Friday November 27, 2010 off on my calendar as the day that I would implement the secret Santa tool. And as unexpected as expected, that day eventually came.

I’m only partially joking. I did in fact mark November 27 for secret santa development, but did so on November 25. Less impressive, true, but — well, just less impressive all around.(more…)

But what if something goes wrong. What if it stops polling for leads? The client won’t like that! Unfortunately, this can be discouraged but can’t be completely prevented. At least not within reason.(more…)

In Opera, Safari, Firefox, and IE everything was great; in Chrome things went so very wrong — lines would wrap, lose opacity, and display behind themselves. Code was super difficult to read.

But now it works! And, to be honest, I’m not sure why. I updated the version of EditArea it uses, and didn’t see a change. When I switched its allow_resize option from both to y everything magically got better.

I was pretty happy. But then I changed y back to both and things didn’t get worse, which left me confused and a little scared.

I hope the issue was resolved by updating EditArea, and all the confusion was caused by some weird caching issue. Or maybe I forgot to refresh.

Codepaste v1 still gets heavier use than Codepaste v2. I wonder if that is by conscious decision, or if people just don’t know about Codepaste v2 and how much better it is.