Grumpy Gamer

Ye Olde Grumpy Gamer Blog. Est. 2004

Dec 20, 2018

Interesting tidbit. Last quarter, Thimbleweed Park did 3x as well on Switch than Steam and overall has done better than Steam. It’s hard to tell if we did really well on Switch are just badly on Stream. Probably a little of both. Steam sales were never where I thought they should be.

The Apple number is a little misleading due to the Mac App Store and iOS being lumped together. Also, the GOG number does not include Q3 due to not receiving money from them yet.

Given that it’s a controller based console, I am pretty impressed with the Xbox number. Microsoft has been a great partner.

The Sony numbers are perplexing. Compared to the Xbox, the PS4 has a much larger installed base, especially in Europe where Thimbleweed Park sales have been overwhelmingly the strongest. I am constantly asked why we don’t do a Vita port. This is why.

These are all LTD (Life to Date) numbers, so Steam, GOG and Xbox had a lead, which makes the Switch all the more impressive.

Dec 4, 2018

It’s missing the pulley in the middle. Archie McPhee’s is only a 5 minute drive from me, so I might head down there and protest. I’ll need signs. Someone call the local TV station.

Nov 2, 2018

Doing testing on closures. This also makes my head hurt.

What do you think this will print?

local t = {
	bar = 100
	f = function() {
		print(this.bar)
	}
}

t2 <- {
	bar = 200
}

t2.f <- t.f

local r = {
	bar = 1000
	function do_call(f) {
		f()
	}
}

r.do_call(t2.f)

Now with Answers

Well, not answers in the definitive truth of the universe way…

If you compile and run this code in Squirrel, the answer is 1000. This surprised me a little. I was expecting 200, but would have taken 100. As I build this new compiler, being some-what compatible with Squirrel is important, since I have a shit-lot of code already written in Squirrel that needs to run in the new compiler.

My new language (called Dinky, btw) is about 90% syntactically compatible with Squirrel, but subtile functionality like what ’this’ means might be more important since it can fundamentally change the nature of the game’s scripting code I’ve already written.

I don’t think I’ve ever written anything as convoluted as the last function call shown, so it might not be important to adhere to, and instead treat ’this’ more conventionally. I do wish I knew what the philosophy behind Squirrel’s notion of ’this’ is. I’m hesitant to just change it and miss some genius buried in why it works that way it does.

Currently my compiler and interrupter produces the same output as Squirrel and I’ll probably stay with that until I understand the ‘why’ a little better.

I’ve spent three weeks on the new compiler and am now ready to move it over the my new game and start using it. I figure it will take a good part of this week to get the game fully functional under the new compiler and back to where I was with Squirrel.

Oct 29, 2018

…in my compiler makes my head hurt.

i = 1 ? 2 : 3
Assert(i == 2)
i = !1 ? 2 : 3
Assert(i == 3)
i = !1 ? 2 : 3 ? 4 : 5
Assert(i == 4)
i = !1 ? 2 ? 3 : 4 : 5 ? 6 : 7
Assert(i == 6)
i = 1 ? 2 ? 3 : 4 : 5 ? 6 : 7
Assert(i == 3)
i = 1 ? !2 ? 3 : 4 : 5 ? 6 : 7
Assert(i == 4)
i = 1 ? 0 ? 3 : 4 : 5 ? 6 : 7
Assert(i == 4)
i = 1 ? !2 ? 3 ? 4 : 5 : 6 : 7 ? 8 : 9
Assert(i == 6)

Any others I should test?

Oct 25, 2018

I have a scary Halloween story to tell you…

I was running into a bug in my new compiler where large ints where loosing precision. After tracing through my compiler’s C++ code for about an hour trying to catch the spot, I came to this function:

int intConstValue() { return _type == kFloat ? _float : _int; }

It took me a bit of starring and then it hit. Something from the deep recesses of C-lore came jumping up.

Do you know the issue?

I won’t keep everyone in suspense…

The both sides of trinary operator must return the same type, and in this case I was returning an INT and a FLOAT, so it cast the INT to a FLOAT before returning the value. I didn’t notice it until one of my units tests sent large INT’s through, larger than a FLOAT can store without loosing precision. Since the function (intConstValue) is returning an INT, I guess I assumed the it would downcast the float, but you know what they say about assuming.

I seem to recall being bitten by a similar bug 20 years ago. I guess I’m good until 2038… just in time for Unix time roll over.

Oct 15, 2018

Much like the Vulcan Pon farr, every seven years I am compelled to write a compiler.

Oct 12, 2018

I’m looking for a good bug database for games and it’s been a struggle.

We used FogBugz on Thimbleweed Park, and it was OK, but a little clunky and not very “modern”. Like a lot of commercial bug databases, they added lots of trendy project management features that distracted from it just being a good bug database. I’m sure some people like this stuff, but I just want a simple modern bug database.

My biggest issue with FogBugz was their pricing. They didn’t do per user pricing, so once we needed 11 accounts, we went from $100/month to $200/month.

We looked at Jira, but it suffers from the same issues as FogBugz.

We also looked at Bugzilla, but it suffers from just being a big complicated mess (sorry if I’ve offended anyone).

I really like Trello as a task manager. I love that you can just drag and drop tasks, it’s very slick. I’d love a bug database that worked like Trello. I’m currently using Trello as a bug database, but it’s just too limiting to use much longer.

A few years ago, I wrote my own bug database, but I just don’t have the time to roll my own again.

I don’t mind self-hosted solutions or paying for a web based service, as long as it’s nice and simple.

Has anyone used any good bug databases?

Sep 18, 2018

I have a (paid) art job opening for my side project. I’m not going to say much about the game other than what I’m looking for in an artist. Think of it as a puzzle.

I’m looking for a great 2D pixel tile artist. You need to have experience building tiles sheets for a tile-based game, I would prefer it if you’ve worked on a released game, but if haven’t and your art is just a hobby and you’re really good, that’s OK.

I’m looking for someone that can create a very distinct art style and can help set the look and feel for the game. I’d like someone that can do more than just create art based on a task list, but rather someone that can act like a mini-art director.

Qualifications:

  • You need to be able to spend 20+ hours a week working on the project for a couple of months.
  • This is a PAID position, so you have to have the ability to work.
  • Must have prior experience building tile sheets and tile maps (the more the better).
  • Understand how to organize a tile sheet and create interconnecting reusable tiles.
  • Need to be up on the “state of the art” in terms of pixel tile based games.
  • Must love pixel art.

If you’re interested, please contact me and include the following:

  1. Your name.
  2. Link to your portfolio/website/etc. It MUST include your tile work, but should also include other work to show you’re a great artist beyond just tile work.
  3. A list of games you’ve worked on.
  4. Why you think you’d be awesome for this job.

I can’t emphasize this enough… I want to create a very unique and interesting look for the game that goes beyond the stock 8-bit tile work out there now (not that it isn’t great, just not what I’m looking for). Your portfolio doesn’t have to include that new look, but it should show me you can help create it.

One last note, please don’t post the above details in the comments, use the contact link.