Quantcast
Channel: as days pass by
Viewing all 158 articles
Browse latest View live

Happy 45th Anniversary, mum and dad

$
0
0

You’re supposed to send cards to wish someone a happy anniversary. Well, today, my mum and dad have been married for 45 years (!), so I sent them some cards. Specifically, five playing cards, with weird symbols on them.

Joker, J♠, A♥, A♠, 5♠

So, the first question is: what order should they be in? You might need to be Irish to get this next bit.

There is a card game in Ireland called Forty-Five. It’s basically Whist, or Trumps; you each play a card, and highest card wins, except that a trump card beats a non-trump. My grandad, my mum’s dad, was an absolute demon at it. You’d sit and play a few hands and then he’d say: you reneged! And you’d say, I did what? And he’d say: you should have played your Jack of Spades there. And you’d say: how the bloody hell do you know I have the Jack of Spades? And then he’d beat you nine hundred games to nil.

Anyway, what makes Forty-Five not be Whist is that the trumps are in a weird order. Imagine that, in this hand, trump suit has been chosen as Spades. The highest trump, the best card in the pack, is the Five of Spades. Then the Jack of Spades, then the Joker, then the Ace of Hearts (regardless of which suit is trump; always the A♥ as fourth trump), then the Ace of Spades and down the other trump suit cards in sequence (K♠, Q♠, etc).

And it is their forty-fifth wedding anniversary. (See what I did there?) So if we put the cards in order:

5♠, J♠, Joker, A♥, A♠

then that’s correct. But what about the weird symbols? Well, once you’ve got the cards laid out in order as above, you can look at them from the right-hand-side and the symbols spell a vertical message:

Weird symbols spell out 'HAPPY ANNIVERSARY'

HAPPYANNIVERSARY.

Also, I’m forty-one, so all you people who have suggested that my parents were unmarried (although by using a shorter word for it) are wrong.

Happy anniversary, mum and dad.


And Everything

$
0
0
Rule Forty-two. All persons more than a mile high to leave the court.”
Everybody looked at Alice.
“I”m not a mile high,” said Alice.
“You are,” said the King.
“Nearly two miles high,” added the Queen.
“Well, I shan’t go, at any rate,” said Alice: “besides, that’s not a regular rule: you invented it just now.”
“It’s the oldest rule in the book,” said the King.
“Then it ought to be Number One,” said Alice.

It’s my birthday (again.........). I’m 21, for the second time around. Hooray!

So far it’s been a nice day, with lots of people wishing me happy birthday from midnight last night (including a rather lovely thing from Jono). I got a cool shirt off mum and dad, which I shall be wearing for this evening’s venture to Ghetto Golf, a sort of weird crazy golf place which is all neon and skulls and graffiti, with cocktails.

Dinner with Niamh this afternoon, too, which is cool. I’m still as worried about the future and the world as I was this time last year, but I can have a day off for my birthday. And I have friends. This helps. So I can do nice things; write some code, maybe publish the talk I did at Hackference, solve a problem or two. Eat biscuits. You know. Nice things. No ironing.

Many happy returns, me.

Sorry Henry

$
0
0

I think I found a bug in a Henry Dudeney book.

Dudeney was a really famous puzzle creator in Victorian/Edwardian times. For Americans: Sam Loyd was sort of an American knock-off of Dudeney, except that Loyd stole half his puzzles from other people and HD didn’t. Dudeney got so annoyed by this theft that he eventually ended up comparing Loyd to the Devil, which was tough talk in 1910.

Anyway, he wrote a number of puzzle books, and at least some are available on Project Gutenberg, so well done the PG people. If you like puzzles, maths or thinking sorts, then there are a few good collections (and there are nicer to read versions at the Internet Archive too). The Canterbury Puzzles is his most famous work, but I’ve been reading Amusements in Mathematics. In there he presents the following puzzle:

81.—THENINECOUNTERS.

15879
×23×46

I have nine counters, each bearing one of the nine digits, 1, 2, 3, 4, 5, 6, 7, 8 and 9. I arranged them on the table in two groups, as shown in the illustration, so as to form two multiplication sums, and found that both sums gave the same product. You will find that 158 multiplied by 23 is 3,634, and that 79 multiplied by 46 is also 3,634. Now, the puzzle I propose is to rearrange the counters so as to get as large a product as possible. What is the best way of placing them? Remember both groups must multiply to the same amount, and there must be three counters multiplied by two in one case, and two multiplied by two counters in the other, just as at present.

81. ANSWER

In this case a certain amount of mere “trial” is unavoidable. But there are two kinds of “trials”—those that are purely haphazard, and those that are methodical. The true puzzle lover is never satisfied with mere haphazard trials. The reader will find that by just reversing the figures in 23 and 46 (making the multipliers 32 and 64) both products will be 5,056. This is an improvement, but it is not the correct answer. We can get as large a product as 5,568 if we multiply 174 by 32 and 96 by 58, but this solution is not to be found without the exercise of some judgment and patience.


But, you know what? I don’t think he’s right. Now, I appreciate that he probably had to spend hours or days trying out possibilities with a piece of paper and a fountain pen, and I just wrote the following 15 lines of Python in five minutes, but hey, he didn’t have to bear with his government trying to ban encryption, so let’s call it even.

from itertools import permutations
nums = [1,2,3,4,5,6,7,8,9]
values = []
for p in permutations(nums, 9):
    one   = p[0]*100 + p[1]*10 + p[2]
    two   = p[3]*10 + p[4]
    three = p[5]*10 + p[6]
    four  = p[7]*10 + p[8]
    if four > three: continue # or we'll see fg*hi and hi*fg as different
    if one*two == three*four:
        expression = "%s*%s = %s*%s = %s" % (
            one, two, three, four, one*two)
        values.append((expression, one*two))
values.sort(key=lambda x:x[1])
print("Solution for 1-9")
print("\n".join([x[0] for x in values]))

The key point here is this: the little programme above indeed recognises his proposed solutions (158*32 = 79*64 = 5056 and 174*32 = 96*58 = 5568) but it also finds two larger ones: 584*12 = 96*73 = 7008 and 532*14 = 98*76 = 7448. Did I miss something about the puzzle? Or am I actually in the rare position of finding an error in a Dudeney book? And all it took was seventy years of computer technology advancement to put me in that position. Maths, eh? Tch.

It’s an interesting book. There are lots of money puzzles, in which I have to carefully remember that ha’pennies and farthings are a thing (a farthing is a quarter of a penny), there are 12 pennies in a shilling, and twenty shillings in a pound. There’s some rather racist portrayals of comic-opera Chinese characters in a few of the puzzles. And my heart sank when I read a puzzle about husbands and wives crossing a river in a boat, where no man would permit his wife to be in the boat with another man without him, because I assumed that the solution would also say something like “and of course the women cannot be expected to row the boat”, and I was then pleasantly surprised to discover that this was not the case and indeed they were described as probably being capable oarswomen and it was likely their boat to begin with! Writings from another time. But still as good as any puzzle book today, if not better.

Collecting user data while protecting user privacy

$
0
0

Lots of companies want to collect data about their users. This is a good thing, generally; being data-driven is important, and it’s jolly hard to know where best to focus your efforts if you don’t know what your people are like. However, this sort of data collection also gives people a sense of disquiet; what are you going to do with that data about me? How do I get you to stop using it? What conclusions are you drawing from it? I’ve spoken about this sense of disquiet in the past, and you can watch (or read) that talk for a lot more detail about how and why people don’t like it.

So, what can we do about it? As I said, being data-driven is a good thing, and you can’t be data-driven if you haven’t got any data to be driven by. How do we enable people to collect data about you without compromising your privacy?

Well, there are some ways. Before I dive into them, though, a couple of brief asides: there are some people who believe that you shouldn’t be allowed to collect any data on your users whatsoever; that the mere act of wanting to do so is in itself a compromise of privacy. This is not addressed to those people. What I want is a way that both sides can get what they want: companies and projects can be data-driven, and users don’t get their privacy compromised. If what you want is that companies are banned from collecting anything… this is not for you. Most people are basically OK with the idea of data collection, they just don’t want to be victimised by it, now or in the future, and it’s that property that we want to protect.

Similarly, if you’re a company who wants to know everything about each individual one of your users so you can sell that data for money, or exploit it on a user-by-user basis, this isn’t for you either. Stop doing that.

Aggregation

The key point here is that, if you’re collecting data about a load of users, you’re usually doing so in order to look at it in aggregate; to draw conclusions about the general trends and the general distribution of your user base. And it’s possible to do that data collection in ways that maintain the aggregate properties of it while making it hard or impossible for the company to use it to target individual users. That’s what we want here: some way that the company can still draw correct conclusions from all the data when collected together, while preventing them from targeting individuals or knowing what a specific person said.

In the 1960s, Warner and Greenberg put together the randomised response technique for social science interviews. Basically, the idea here is that if you want to ask people questions about sensitive topics — have they committed a crime? what are their sexual preferences? — then you need to be able to draw aggregate conclusions about what percentages of people have done various things, but any one individual’s ballot shouldn’t be a confession that can be used against them. The technique varies a lot in exactly how it’s applied, but the basic concept is that for any question, there’s a random chance that the answerer should lie in their response. If some people lie in one direction (saying that they did a thing, when they didn’t), and the same proportion of people lie in the other direction (saying they didn’t do the thing when they did), then if you’ve got enough answerers, all the lies pretty much cancel out. So your aggregate statistics are still pretty much accurate — you know that X percent of people did the thing — but any one individual person’s response isn’t incriminating, because they might have been lying. This gives us the privacy protection we need for people, while preserving the aggregate properties that allow the survey-analysers to draw accurate conclusions.

It’s something like whether you’ll find a ticket inspector on a train. Train companies realised a long time ago that you don’t need to put a ticket inspector on every single train. Instead, you can put inspectors on enough trains that the chance of fare-dodgers being caught is high enough that they don’t want to take the risk. This randomised response is similar; if you get a ballot from someone saying that they smoked marijuana, then you can’t know whether they were one of those who were randomly selected to lie about their answer, and therefore that answer isn’t incriminating, but the overall percentage of people who say they smoked will be roughly equal to the percentage of people who actually did.

A worked example

Let’s imagine you’re, say, an operating system vendor. You’d like to know what sorts of machines your users are installing on (Ubuntu are looking to do this as most other OSes already do), and so how much RAM those machines have would be a useful figure to know. (Lots of other stats would also be useful, of course, but we’ll just look at one for now while we’re explaining the process. And remember this all applies to any statistic you want to collect; it’s not particular to OS vendors, or RAM. If you want to know how often your users open your app, or what country they’re in, this process works too.)

So, we assume that the actual truth about how much RAM the users’ computers have looks something like this graph. Remember, the company does not know this. They want to know it, but they currently don’t.

So, how can they collect data to know this graph, without being able to tell how much RAM any one specific user has?

As described above, the way to do this is to randomise the responses. Let’s say that we tell 20% of users to lie about their answer, one category up or down. So if you’ve really got 8GB of RAM, then there’s an 80% chance you tell the truth, and a 20% chance you lie; 10% of users lie in a “downwards” direction, so they claim to have 4GB of RAM when they’ve actually got 8GB, and 10% of users lie in an “upwards” direction and claim to have 16GB. Obviously, we wouldn’t actually have the users lie — the software that collects this info would randomly either produce the correct information or not with the above probabilities, and people wouldn’t even know it was doing it; the deliberately incorrect data is only provided to the survey. (Your computer doesn’t lie to you about how much RAM it’s got, just the company.) What does that do to the graph data?

We show in this graph the users that gave accurate information in green, and inaccurate lies in red. And the graph looks pretty much the same! Any one given user’s answers are unreliable and can’t be trusted, but the overall shape of the graph is pretty similar to the actual truth. There are still peaks at the most popular points, and still troughs at the unpopular ones. Each bar in the graph is reasonably accurate (accuracy figures are shown below each bar, and they’ll normally be around 90-95%, although because it’s random it may fluctuate a little for you.) So our company can draw conclusions from this data, and they’ll be generally correct. They’ll have to take those conclusions with a small pinch of salt, because we’ve deliberately introduced inaccuracy into them, but the trends and the overall shape of the data will be good.

The key point here is that, although you can see in the graph which answers are truth and which are incorrect, the company can’t. They don’t get told whether an answer is truth or lies; they just get the information and no indication of how true it is. They’ll know the percentage chance that an answer is untrue, but they won’t know whether any one given answer is.

Can we be more inaccurate? Well, here’s a graph to play with. You can adjust what percentage of users’ computers lie about their survey results by dragging the slider, and see what that does to the data.

0%  100%

20% of submissions are deliberately incorrect

Even if you make every single user lie about their values, the graph shape isn’t too bad. Lying tends to “flatten out” the graph; it makes tall peaks less tall, and short troughs more tall, and every single person lying probably flattens out things so much that conclusions you draw are probably now going to be wrong. But you can see from this that it ought to be possible to run the numbers and come up with a “lie” percentage which accurately balances the company’s need for accurate information with the user’s need to not provide accuracy.

It is of course critical to this whole procedure that the lies cancel out, which means that they need to be evenly distributed. If everyone just makes up random answers then obviously this doesn’t work; answers have to start with the truth and then (maybe) lie in one direction or another.

This is a fairly simple description of this whole process of introducing noise into the data, and data scientists would be able to bring much more learning to bear on this. For example, how much does it affect accuracy if user information can lie by more than one “step” in every direction? Do we make it so instead of n% truth and 100-n% lies, we distribute the lies normally across the graph with the centrepoint being the truth? Is it possible to do this data collection without flattening out the graph to such an extent? And the state of the data art has moved on since the 1960s, too: Dwork wrote an influential 2006 paper on differential privacy which goes into this in more detail. Obviously we’ll be collecting data on more than one number — someone looking for data on computers on which their OS is installed will want for example version info, network connectivity, lots of hardware stats, device vendor, and so on. And that’s OK, because it’s safe to collect this data now… so how do our accuracy figures change when there are lots of stats and not just one? There will be better statistical ways to quantify how inaccurate the results are than my simple single-bar percentage measure, and how to tweak the percentage-of-lying to give the best results for everyone. This whole topic seems like something that data scientists in various communities could really get their teeth into and provide great suggestions and help to companies who want to collect data in a responsible way.

Of course, this applies to any data you want to collect. Do you want analytics on how often your users open your app? What times of day they do that? Which OS version they’re on? How long do they spend using it? All your data still works in aggregate, but the things you’re collecting aren’t so personally invasive, because you don’t know if a user’s records are lies. This needs careful thought — there has been plenty of research on deanonymising data and similar things, and the EFF’s Panopticlick project shows how a combination of data can be cross-referenced and that needs protecting against too, but that’s what data science is for; to tune the parameters used here so that individual privacy isn’t compromised while aggregate properties are preserved.

If a company is collecting info about you and they’re not actually interested in tying your submitted records to you (see previous point about how this doesn’t apply to companies who do want to do this, who are a whole different problem), then this in theory isn’t needed. They don’t have to collect IP addresses or usernames and record them against each submission, and indeed if they don’t want that information then they probably don’t do that. But there’s always a concern: what if they’re really doing that and lying about it? Well, this is how we alleviate that problem. Even if a company actually are trying to collect personally-identifiable data and they’re lying to us about doing that it doesn’t matter, because we protect ourselves by — with a specific probability — lying back to them. And then everyone gets what they want. There’s a certain sense of justice in that.

Squares and prettier graphs

$
0
0

The Futility Closet people recently posted “A Square Circle“, in which they showed:

49² + 73² = 7730
77² + 30² = 6829
68² + 29² = 5465
54² + 65² = 7141
71² + 41² = 6722
67² + 22² = 4973

which is a nice little result. I like this sort of recreational maths, so I spent a little time wondering whether this was the only such cycle, or the longest, or whether there were longer ones. A brief bit of Python scripting later, and the truth is revealed: it’s not the only cycle, but it is the longest one, with six entries.

There are no other 6-cycles; there’s a 5-cycle (start from 68²+50²=7124), a 4-cycle (47²+56²=5345) and interestingly two 1-cycles, numbers which lead to themselves: 12²+33²=1233 and 88²+33²=8833. That’s rather cool.

I did wonder whether there are also interesting cycles with more numbers, so I tried out adding the squares of 3-digit numbers:

but sadly they’re really boring; there’s a 2-cycle (137²+461²=231290, 231²+290²=137461), another 1-cycle (990²+100²=990100) and that’s it. Nonetheless, quite an interesting little property to fiddle around with.

Prettier graphs

Originally I was going to make my script count the lengths of the cycles and show the largest one and so on, but I realised that that was annoying and fiddly and what I ought to do is just display a nice picture of them and that’d be clear to my eyes immediately and take no code at all. My go-to tool for this sort of thing, where I’m drawing graphs (in the mathematical nodes-and-edges sense) programmatically, is Graphviz, because it’s really easy; you basically write out your graph as obvious simple words with arrows:

digraph{"get up"->"go to work";"go to work"->"come home again";"come home again"->"go to sleep";"go to sleep"->"get up";}

and then you can make it a graph with one command: dot -Tpng simple.dot > output.png:

A basic graphviz graph of the above code; plain black and white, and not pretty

That looks pretty terrible, though; plain black and white, ugly. I tweaked my graph above to look a bit nicer, with some colours, and that’s really easy; you just add a few extra properties to the nodes (the things to do) and edges (the arrows) in your graph specification:

digraph{node[shape="rectangle"style="rounded,filled"gradientangle="270"fillcolor="#990033:#f5404f"color="#991111"fontcolor="#ffffff"fontname="Arial"]edge[color="#006699"len=2.5]"get up"->"go to work";"go to work"->"come home again";"come home again"->"go to sleep";"go to sleep"->"get up";}

and then you get something a bit nicer:

Same graph, but with a little colour and niceness

Now, I am no graphic artist. I’m not good at this stuff. If you’re thinking “that looks rubbish; I could make it look loads nicer” then great! Please, please do so! I would very much like one of the many graphic artists involved in the open source world to put together a “theme” for graphviz that just makes graphs look a bit nicer and classier, by default. Seriously, if you’ve got an artistic eye this is the sort of thing that’d probably take you a lunchtime to do. Just pick some nice colours, line widths, arrow shapes, node shapes, and you’re done. Write a blog post saying “these are the six lines to add to the top of your graphviz .dot files” and that’s the job complete; that would be a small but measureable improvement to the universe that you’ve made, there, with not much effort at all.

The graphviz people are pretty open to the idea of even including such a thing in their releases, maybe even by default. I asked on Twitter whether someone could or had already done this that I’m asking for, and one of the people who responded was Stephen North, who’s part of the graphviz team, saying that they’d be happy to include and publicise such a thing.

To be clear, this is not a complaint about the graphviz team themselves; their job is mostly to think very hard about layout algorithms, which they indeed do a good job of. But I think it’s really important, not just that open source stuff can be made to look pretty if you know what you’re doing, but also that it already does look pretty by default where it can. It turns people off your software, no matter how powerful it is, if some less-powerful alternative puts out more attractive output. There are some things where this would take a lot of work; rejigging the entire UI of a complex programme is difficult and time-consuming, absolutely. But I really feel like someone with a decent artistic eye (i.e., not me) could put together a simple set of colours and font choices and line widths that would make graphviz look much nicer either by default or by specifying --pretty or something, and it wouldn’t take long at all. I’d certainly be way happier if that happened. Maybe that person is you, gentle reader?

Telegram notifications for Jenkins builds

$
0
0

It’s nice to get updates from your CI system when things build. It’s even nicer to do it without having to run any servers to do it. Here’s how I send build notifications to a Telegram bot from Jenkins.

Basically, Jenkins knows how to hit a webhook …

I wrote a Web Component

OwnTracks and a map

$
0
0

Every year we do a bit of a pub crawl in Birmingham between Christmas and New Year; a chance to get away from the turkey risotto, and hang out with people and talk about techie things after a few days away with family and so on. It’s all rather …


Happy 45th Anniversary, mum and dad

$
0
0

You’re supposed to send cards to wish someone a happy anniversary. Well, today, my mum and dad have been married for 45 years (!), so I sent them some cards. Specifically, five playing cards, with weird symbols on them.

Joker, J♠, A♥, A♠, 5♠

So, the first question is: what order should they be in …

And Everything

$
0
0
Rule Forty-two. All persons more than a mile high to leave the court.”
Everybody looked at Alice.
“I”m not a mile high,” said Alice.
“You are,” said the King.
“Nearly two miles high,” added the Queen.
“Well, I shan’t go, at any rate,” said Alice: “besides, that’s …

Sorry Henry

$
0
0

I think I found a bug in a Henry Dudeney book.

Dudeney was a really famous puzzle creator in Victorian/Edwardian times. For Americans: Sam Loyd was sort of an American knock-off of Dudeney, except that Loyd stole half his puzzles from other people and HD didn’t. Dudeney got …

Collecting user data while protecting user privacy

$
0
0

Lots of companies want to collect data about their users. This is a good thing, generally; being data-driven is important, and it’s jolly hard to know where best to focus your efforts if you don’t know what your people are like. However, this sort of data collection also …

Squares and prettier graphs

$
0
0

The Futility Closet people recently posted “A Square Circle“, in which they showed:

49² + 73² = 7730
77² + 30² = 6829
68² + 29² = 5465
54² + 65² = 7141
71² + 41² = 6722
67² + 22² = 4973

which is a nice little result. I like this sort of recreational maths, so I spent a little time …

FOSS Talk Live 2018

Little community conferences

$
0
0

This last weekend I was at FOSS Talk Live 2018. It was fun. And it led me into various thoughts of how I’d like there to be more of this sort of fun in and around the tech community, and how my feelings on success have changed a bit …


EU Copyright Reform: a letter to my MEP, Siôn Simon, about Article 13

$
0
0

Dear Siôn,

Thank you for your comments on Twitter welcoming my feedback on the EU’s proposed copyright reform. I’d like to discuss in particular Article 13, “Use of protected content by information society service providers storing and giving access to large amounts of works and other subject-matter uploaded …

Inside out

$
0
0

Recently the question of whether browsers should have a View Source function has reared its head again. Chris Coyier says no, as do Tom Dale and Christian Heilmann. Jonathan Snook says yes they should.

The argument against essentially boils down to this: the browser devtools are better. This is undeniably …

If you can do it with CSS do it with CSS

$
0
0

I read Twitter with Tweetdeck. And I use the excellent Better Tweetdeck to improve my Tweetdeck experience. And I had an idea.

You see, emoji, much as they’re the way we communicate now, they’re actually quite hard to read. And Slack does this rather neat thing where if …

LOWREZJAM 2018

$
0
0

As in 2016, I entered the 2018 LOWREZJAM on itch.io, a game jam where you have to build a game which runs in a 64x64 pixel square. So, really small — the Game Boy was 160x144, or about six times as big. So you’ve not got a lot of space to do things, but then constraints are the mother of innovation and you do get some really interesting game concepts! So, here are my reviews (which are also posted to itch.io so the developers get to see them; you can only rate and review as part of the jam if you entered your own game, which I did.

I’ve only rated games which are browser playable, mainly because there are loads of entries and I have to find a way to cut them down somehow, the reviews are in no particular order, and I didn’t quite get to them all (I nearly did, so apologies if I didn’t get to yours). Some thoughts on the jam as a whole after the reviews.

Block’ed

Honestly, I don’t understand what I need to do here. I can move my little robot around, and I worked out that I can pick up the little collections of 3 rocks (?), and when I put that collection back down again it seems to have turned into a red block with an exclamation mark on it. But I don’t understand what’s going on. This feels like it could be a really quite nice puzzle game, but the initial hurdle to get into it is too high. A set of tutorial levels which introduce the concepts would be really, really useful here. And this has, I admit, suffered because it’s part of a game and I have nearly 100 games to review, for which I apologise. If this gets some tutorials, and once I’m in a little less of a rush, I’d be happy to play this again and see how it feels!

Donuts Rage

A game where you have to tap the buttons as fast as possible! In pixel art graphics with 8-bit-ish beeping sounds! Makes me feel like I’m playing Daley Thompson’s Decathlon in about 1986. Anyway, the graphics here are pretty nicely done. The gameplay isn’t very engaging; tap the buttons as fast as you can, and eventually “as fast as you can” is not “as fast as the game wants you to” and you lose. This feels like it might be a nice brief diversion — a quick minigame embedded in something larger, which is a pretty good goal for these little 64x64 games. Good work for what it is!

Lydian

This is excellent. Hack-and-slash, as it says, but really well implemented; the graphics are evocative despite being pixelated, the storyline is good (she got her daughter back! yay!), the music is cool (especially the title screen), the monsters are scary, the fighting is well done, the mysterious spirit between levels that gifts you new weapons is mysterious (why’s it doing this? Not that I want it to stop, you understand). The best of the old pixel art games managed to make their characters expressive even though they were only a few pixels tall, and this succeeds in that too.

A couple of minuscule issues, none of which harm the rating. I didn’t at first grasp that the weapon switcher (from pressing Space, which was very clearly indicated with the little space bar keyboard graphic, well done) needed me to hold space down and then use the arrow keys; I was just hitting space expecting that by itself to switch weapons. Maybe show left/right arrows on that screen too to indicate that? Tumbling/rolling seems to be a bit sensitive to the order the keys are pressed in; pressing z and then an arrow key does a little roll in place, whereas pressing an arrow and then z does a proper roll as expected. Perhaps this could be tweaked? This didn’t matter that much to me because I never needed to roll, or to use the health potion (was it a health potion? I guess so, but I didn’t use it) because of the final small issue: if this does become a real game, the ice axe is waaay overpowered. I loved the implementation — it was clear the ice axe was an _​ice​_ axe, and I like a lot that you can kill things without having to be horizontally aligned with them which most games of this sort forget to do — but once I had the ice axe, all the battles were super easy. That’s fine because the idea of this is to tell the story rather than being a challenging battle in itself, but that may not apply if this becomes a fuller game.

The developer also is very responsive; I found some technical issues with the game (as in other comments) and they were quickly fixed, which is good because it meant I got to play this.

Anyway, great work.

Hike

This does an excellent job of being unnerving to play. I found myself twitching at every even slight noise. The standing people — are they people? are they cardboard cutouts of people? — seem rather silently menacing. Great atmosphere, and good sound design. It’s hard to tell quite what’s going on, which is a function of the very low resolution, but that’s what lowrezjam is all about, so that’s OK. The controls are really too sensitive, though; I found it hard to control where I was going because a tiny move of the mouse would spin me halfway around the screen, and I’d lose track of where I was facing. This is more of a problem with a game where looking back means you die…

JAM in 64 Seconds

This is a neat concept. I really like that the screen ends up filling up with things you haven’t dealt with — work emails, dog leavings, and so on. And I laughed out loud when doing the “coding” section and an actual bug appeared that I had to get rid of. This is, despite its 64px nature, a terribly accurate description of how writing a game for the jam actually is! Nice work. The graphics were rather blocky and difficult to grasp, though — this is something that a graphic artist could doubtless improve on — and sometimes clicking on things didn’t seem to register which meant that in the first playthrough I didn’t realise that you could click on things to remove them (and so I lost very quickly). I got the hang of it, though; I’ll keep persevering to see if I can actually finish a game now :-)

grav-racer

Seems an interesting beginning to a game concept, and embracing Rust compiling to webasm and webgl is pretty cool. This could be good stuff when it’s finished; as it is, it’s more of a prototype, of course.

Set Fire to the Empire!

Cool music. I like the idea here, too; simple but good fun. It’s a bit hard to actually stay ahead of things, though, so it devolves rather into button-mashing, but that’s maybe the goal here. And the main player sprite is impressively expressive for being only about 5 pixels high!

For the Demon Lord

This is more detailed than I thought it would be at first. It’s essentially, tower defence; you’re attacked by an endless wave of heroes aiming to smash your collection of crystals, and you create monsters to fight back against them; your monsters are confined to the square they’re on, but you can upgrade them with points. Points (well, “souls”) get generated by your crystals, so you have the normal tower-defence decision to make, of “do I have a whole bunch of quite rubbish monsters”, versus “do I have only a couple of monsters but upgrade them continuously until they turn into the Hulk”? And I’m not sure which is actually best here, which is a good sign. The upgrade tree is complex, though; all created monsters start as a blob, and depending on which of their stats you upgrade, they turn into a variety of different monsters, and I never had a very good handle on which collection of upgrades turned my blob into a mega blob, or a skeleton, or a demon. It would be good if there were some sort of on-screen indication of where the next upgrade or upgrades will occur and what they might be, so I can choose to evolve in a different direction without having to try to make notes about what the upgrade tree looks like. One of the upgrade paths even leads to crystals, interestingly, so you can breed more crystals to get more points, thus regaining your power source after the heroes have destroyed some of them. This is a good mechanic, and I liked the ideas behind this game quite a lot. It suffers from the 64px restriction, though; the playfield is bigger than the screen, so you end up scrolling around the battlefield while looking at it through a pinhole, which is pretty annoying. But that doesn’t affect the core gameplay much, and I like the core gameplay. Nice work.

Also, since I’m a developer and all, I thought, hahaha, I’ll just stop the game in the debugger and give myself 100,000 souls and then I can upgrade everything and win massively. I was rather crestfallen to find out that the hero generation rate is actually tied to the number of souls you’ve got, so my little hacking adventure lasted about a minute before an unstoppable wave of hero death overwhelmed my monster force faster than I could upgrade them or add reinforcements. Very clever, developers. :-)

A lot of time.

I didn’t realise for quite a while that the “hand” icon actually is a hand, so I couldn’t do anything. Once I’d worked that out, it helped. I don’t understand the gramophone, though; I can put records on it, but then interacting with it just takes them back off again. The game kinda illustrates ennui and loss through actually making the player experience them, which is a technique I can’t decide whether I like or not. The graphics for the rooms are nicely implemented; objects not quite so much (I had no idea the records were records until I worked out I could put them on the gramophone, and the dog is… kinda representative of a dog. But when you’ve only got 15 pixels or so that’s probably the best that’s doable!)

Sherlock Jack

Simple concept — walk around a slightly confusing maze of paths, kill the monsters that get in your way, and find clues. The “tracker dots” around the edge of the screen are useful, since otherwise exploring the maze would be really frustrating. However, there are some usability issues; if you walk into a wall you tend to get “stuck” on it and have to back away. It would be much nicer if you were to slide along that wall rather than getting stuck on it; especially since you can only walk in 45-degree directions and the tunnels in the maze are at different angles, meaning that just walking is often joggling the keys to approximate that diagonal. This isn’t the fun kind of challenge :) Also, walking down a tunnel only to find that it’s a dead end is an amusing thing the first time but gets really tiring after that, because it’s just annoying; all you can do is retrace your steps. I like the Sherlock framing, though, and the “cheat” button was very much appreciated!

Tank Raid

Flagrantly and unashamedly violates the 64px rules; the rounded corners on everything and the wheels on the tank in no way conform to the 64px grid :-) I never really got a sense of why my “special attack” misses lots of the time; that’s not very special. Fun little game, though; I got quite into the strategy of whether to shield first and attack afterwards, and who to attack. And the graphics would be quite nice, in a jam which didn’t have the pixel restrictions. It’s worth ignoring the 64px thing, fixing this up to have nicer fonts and so on, and then releasing it, I would say.

Beat the Glitches

I think a game which shows glitchiness with corrupted graphics might want to pick a jam where it gets more screen resolution to play with, since it’s hard to tell whether a thing looks wrong because it’s “corrupt” or it looks wrong just because it’s hugely-inflated pixel art :) Anyway, basic gameplay seemed fine, but I never grasped whether there’s a point other than “keep killing the monsters until eventually you die”. I thought that the “green arrows” which appear were telling me a direction to go, but now I think that they just sometimes appear when I kill a monster, and I don’t know why. In short, a good proof of concept, but it needs a lot more before it becomes an actual game.

Arctic Arctic Adventure

Simple concept but a reasonable one; collect bullets and throw them at invading walruses before they eat all your ice. The bullets are actually curry, rather weirdly — do penguins particularly like curry? do walruses particularly not like it? — but the main problem here is that the walruses appear and then disappear waaaaaay too quickly. Either you need the reflexes of a particularly quick-moving cobra to play this, or I’m doing something wrong, because I hardly ever managed to get into position and actually hit one of the attackers before they vanished again, which puts the game too far into the “frustrating rather than fun” category. Nice idea, though; it’s quite reminiscent of the sorts of 8-bit games you actually got in the 80s.

Outer Space Problems

Turn-based fighting; a board game, essentially, but with an outer-space theme. It’s quite fun to play and there’s an interesting variety of movements and skills — some ships have a shield, others a laser, or the ability to “hack” which is actually altering the turn order. It’s also presented in isometric rather than overhead view, which is unusual in this jam; it’s a clever idea, but I think it might be unusual at 64px for a reason, because if you’ve got two ships, one behind another, it can be quite confusing to see what’s going on (where this would likely be a lot clearer with more resolution). Nonetheless, this is a complete game, nicely explained, fun to play, and with simple but good audio. I also found all the text very easy to read, which hasn’t been the case for a number of games I’ve played in this jam, so that’s a good piece of design too. (And I appreciated the use of text (“ATK”, for example) rather than some hard-to-identify icon!) Two thumbs up!

Tactical Air Support

Fly around and bomb things; an overhead plane game. Neatly done; this was actually quite good fun, bombing their tanks, and it was nice to see (realistically) that a bomb which lands near a tank swallows up that tank in the ensuing explosion. The description explicitly states that slowing your plane down is a good idea, and it is not wrong about that; I can’t help think that it would be easier to just start the plane at minimum speed rather than telling people to do that in the description. Graphics are a bit blocky and basic; some antialiasing would help here, I think. But the game is smoothly done, and fun to play, and that’s all good with me!

Infinitroid

This is, well, it’s Metroid-style, hence the name! Basic mechanics are sensible and easy to get a handle on (although I always take a while to get used to jump being a key rather than the up button), and I was soon bouncing all over the map shooting things. Those little gun turrets that don’t wake up (and are invulnerable) are really irritating because every time I jump to wake them up they fling a bullet directly into me, but that’s not the game’s fault, that’s me being rubbish :) I have a bit of a complaint in that I didn’t really have a good sense of how well I was doing; the “readout” section at the bottom of the screen is rather abstract, so I didn’t really know what my health was, or what difference collecting the different-coloured drops actually made to what I was doing. The sound is very PC-speaker squeaky; lots of seemingly unconnected beeps, so I didn’t really gather what they all meant. Fun little game, nonetheless!

Corrupted Space - LOWREZ edition

Walk around, touching every piece of ground to remove the bacteria near to it. It took me some time to realise that the bacteria grows back after you’ve removed it, meaning that you end up going over and over the same bits of the level trying to get it all clean before the first bit you did grows back; rather like painting the Forth Bridge, where once you get to the end you have to start all over again at the beginning. And once you get a few levels in, there are enemies that fire bullets which kill you (which is fine) but you walk faster than the bullets fly, so if you insert yourself into a bullet line and walk along with it, you end up walking into the bullet in front of you (and dying), which is pretty annoying. Although that’s likely my fault because I’m not good at this sort of twitch reactions game. The implementation is flawless as far as I can tell, graphics and music and all.

Prim d’avust

Impeccably implemented sliding 15 puzzle. Cool music, too. I am ashamed to admit that I didn’t get very far because I’m not very good at 15 puzzles, especially when the image is as abstract as this, but that’s not the game’s fault (and you even give a little sound and flash when a piece is in the right place, so there’s no excuse). Well done. Also great to see Godot being used; as someone who’d like to experiment with Godot I’d be an eager reader of a really detailed devlog explaining how this was built, how it was restricted to 64px, how you made it expand to a larger size on the page, and so on!

Insta Quest

What a nice departure from the normal type of game submitted to this jam! I enjoyed playing this; it’s clear what to do, and the mechanics are obvious and make sense. Also, I have terrible reactions and I should work on that. Good game; some audio would be a good addition, but the developer’s said that the game’s still being worked on, so that’s OK.

Seasons of Fortune

I was getting my one fortune a day for some days before the jam voting even opened :-) Nicely implemented, and the “one a day” trick (which is really the fundamental thing this does) is unusual to see, and quite good. The game suffers quite a lot from text not being very readable; a different font might help with that a little, perhaps? Other games also have the problem, but they’re not quite as centred around definitely reading the text as this is. I mean, it’s not a game, per se, but it’s well done for what it is. Good work.

Soldier 64

This feels (deliberately, I expect) very Spectrum-ish as a game, especially the colour blocking and font. It’s very basic, but it certainly works; I remember playing games similar to this back in the 80s. The music is a bit too repetitive, but for what this is the game certainly works.

Match X

Something like the venerable “Same Game” puzzle, but with a larger playfield comprising pixel art pictures. This is a take on the puzzle I’ve never seen before, and it’s surprisingly difficult, which is refreshing. It’s also very useful that you don’t have to entirely clear the playfield to progress; getting down to four pixels or less is fine, which is good because I’m not sure that some of the levels are actually completely clearable. I was expecting fallen columns to slide to the left to avoid leaving any completely empty columns, and they don’t, which made solving the first level more difficult until I realised that! But the game works, and it’s good to see new approaches to old ideas.

PIXELISLANDS

Not a game, per se; it’s a procedurally-generated landscape you can walk around in. Technically impressive, although it suffers rather from being bounced down to 64px — the resolution’s just too small to properly express the design, and so the screen does occasionally feel like it’s dissolving into random pixels. The audio is nicely done too. This would be an impressive base for an actual game to take place on, or done as a non-interactive art piece.

Silver Rule: Prologue

An interesting premise; you’re preparing to embark on a great quest. Unfortunately, you’re pretty lame, and so even passing the initial test is a challenge. This is partially because the vermin you have to kill move really fast, and partially because your magic power is rubbish; to attack an enemy with the default fire spell you have to be really close to them, and if you get that close you’re likely to touch them, which (a) costs you health and (b) more annoyingly, thrusts you away in a random direction, so you have to approach the enemy again, causing the same problem. This is improved a little by the second magic skill, which actually fires bolts of ice from a (short) distance. Over time your magical abilities wane, but there’s a little minigame that I’m very impressed with where you literally descend into your own psyche and chase away bad thoughts, clearing your mind and restoring your magical power. I like that idea a lot; very cool. Those bad thoughts also move really fast, but the minigame is easier because it’s in such a constrained location. I kinda got the feeling that you get when you play games originally intended for a 386 on a modern computer and everything’s sped right up; I’m sure this wasn’t intentional, but it feels rather weird. There is definitely the seed of a good game here, if the balance can be worked out (and the graphics made a little less blocky, perhaps). And the developer explicitly calls out that this is a work-in-progress, so fingers crossed for the improvements!

dot.Market 2

What an intriguing idea! I’m glad the tutorial was below the game or I’d have had no idea what I was doing, but this is pretty interesting. I don’t think I quite get the idea of price fluctuations, though; if I go away to make a cup of tea, do the prices change? Or do they only alter when I do things, like a stock market version of Superhot? Nonetheless, this is fascinating, and quite different from most other games; bonus points for idea creation here, and the pixel art editor is well-done and easy to understand.

Labyrintho - Low Rez Edition

A prototype, as the developer says, but surprisingly atmospheric. The clock tick is simultaneously quite unsettling, after a while, and a sign that you’ve ended up back in that room again. I should really make a map. Nicely implemented, and the graphics are excellent; you’d hardly know that it’s only 64px square, although this is helped a bit by the “saminess” of them all; walls and floor and that’s about it :) If this can be made into a small game and keep the atmosphere, it’ll be good, I think!

Sidestepper

Impressive for being 1KB in size!

Mini Organizer 3000

Nice variant on Sokoban and similar games. Some of the later puzzles are actually pretty tricky, which is good. No great shakes graphically, but it doesn’t really need to be for this sort of game to at least be playable! Nice work.

Fibonacci Box

Ultra-minimal but very clear. This is a good demonstration of how you don’t need good graphics to have good gameplay. And (I admit this sounds a bit stupid) the graphics are good, given the overall constraint of the game; something about the colours chosen or the widths of everything, but it just looks right. The physics is annoying, though; I keep falling off the edge of platforms, or finding it very difficult to move only a few pixels to left or right, and that’s just not a challenge I enjoy; it just makes me frustrated. I think I like my puzzle games to be puzzles and not require pixel-perfect moving. I don’t know whether this is a fault in the game or in me, though. Still, this is good stuff.

Fedora Rise

Hammer your space bar to raise your avatar’s fedora. I feel like this is an in-joke that I’m not in on…

🔦

As the game itself describes, it’s a tech demo rather than a finished thing. Cleverly done, though; the devlogs are fascinating. I had no idea that bitsy could even do things beyond the most basic of 1981-era games, let alone that there seems to be a community of people working on plugins/extensions to add more stuff. That’s neat. I need to look more into this.

UNLOCKR

Nicely implemented. It’s not difficult, per se — the only threat is overshooting — but the movement is very smoothly done and fast, and feels very tactile. The sound design plays into this well with the soft clicking as your lock spins. The music is perhaps a little overpowering. This would make a nice little minigame somewhere in a larger game, or as the method to open doors in such a game, or similar. Nice work!

Petoink

Weird premise (inhale ink? spit it at enemies, which then turn into ink? and that ink powers the ship?) but executes well on it. And as there are multiple ink colours it becomes a little bit of a puzzle game about resource management. The graphics are well done; shame there’s no sound!

Tafl

Excellent board game. This is a tafl game, from a long tradition; it’s a kind of small-board version of hnefatafl. Good fun to play, although the AI is not very sophisticated; I spent time being really careful about moving my king until I realised that the orcs just don’t care about the king at all. But I suspect they will start caring in future versions, so I am right to consider moves in detail. The game maps really nicely onto the 64px layout, and the graphics are quite illustrative (I like the subtle shadows on the players); the audio is good, too, in a simple way. This is a great implementation, and I think it could become something really good with some tweaking.

Blind Bird

A rather fun mouse-only game; the titular “blind bird” keeps walking, bouncing off walls and reversing direction, and you can move one magic block from place to place to help the bird climb obstacles or change direction in the right place. The first few moves give you all the time you want to place the block, but subsequent ones require quite accurate timing, as the bird (an eared dove, apparently) walks off your magic block onto a small safe place and you have to quickly move the block so they can walk onto it again and continue the journey. Because the resolution is so small, the screen camera moves quite a lot, and so I found myself putting the block one space higher or lower than it should be… but that’s my fault, not the game’s fault! Tiny, tiny graphical complaint: the bird’s eye isn’t green, it’s transparent, which means that if it walks in front of some of the tutorial writing, you can see the writing through the bird’s eye. Which looks a bit weird. But that’s seriously the only thing I have to complain about; this is a tiny nugget of joy, this game. I like the four-colour green palette and everything. This is good stuff.

UPCRAWL

Old-skool platformer, with a really high jump. There’s nothing necessarily innovative about this in gameplay, but there doesn’t need to be; it’s fun, and well-implemented. And it does a lot with not many pixels at all. I appreciated the ability to change the music, too. Nice work!

Total Dark

A well-implemented and good-to-play complete game. I like the mechanic of decreasing power when firing bullets; reminiscent of magic spells cast from hit points or stamina. And it’s kept away from being frustrating by having lots of recharge points rather than having them be a battle to even find. Took me some time to complete, and I persevered because I was enjoying myself. A tiny gripe: if the map had a flashing dot showing where I was it would be (I’ve measured this) one hundred billion times more useful. Maybe everyone else just has a better spatial memory than I do? Anyway, great work! One of the things I like most is that although the graphics are very boxy and straight-edged, that really works with the aesthetic rather than looking unfinished or childish like some other games. And the fading light shows that the developer could have done something looking more shaded and real if they’d needed to.

Pixel Beard

Blimey this game does a lot. Lots of primary colours in the graphics, so it feels very retro, not that that’s a bad thing. I got murdered by the barman for spilling all the grog, though :)

onychophora

Named for a velvet worm. This is rather like Snakebird, but with mining. I like the idea. It’s hard to properly understand why one gets buried, though; this is a problem which would, I think, be solveable with better graphics. I think the rule is this: if you’ve dug a hole so that a contiguous block of mud above you is completely separated from a block below you, then that block falls and crushes you. But it’s hard to tell because there’s no animation; digging the final piece of that hole immediately transitions to you being dead. If I could see the block above me fall, then it would be much clearer what was going on, which I think would help a lot. This prototype does suggest that there’s an interesting game here, though, and I’d like to see more of it once it’s completed with animation, maybe some improved graphics, and sound!

Reincarnation - When death calls

Played this, but didn’t get a chance to write a proper review. It made me laugh, though.

Flush Rush

Neat little platformer. The wraparound world takes some getting used to, but it’s a clever innovation. And the frenetic music really adds to the play. Good graphics; a gem, all in all. Nice work!

BEETLERUSH

A more complex game than it first looks. The premise is simple; identify identical pairs of beetles in the 4x4 grid and drag them together, which causes them to explode, clearing part of the playing field. But this is quite a lot harder than it looks because all the beetles look roughly the same! You have to watch them move fairly closely to tell which ones are actually pairs… and if you pair up two non-identical beetles, they turn into a sort of pupa which blocks up a square on the board. And then once you get the hang of that, right-click drag moves the playfield and you realise that the 4x4 grid you were seeing is actually just a 4x4 section of a much larger grid, which is completely full of beetles, all madly moving and needing pairing up. This is clever stuff; the realisations of each of these things gave me quite a surprise as to how much bigger the game was than I first anticipated. I do have a few small issues to think about, though. Incorrectly pairing two beetles turns them into a sort of red pupa, which is bad. But it doesn’t look bad; I didn’t realise at first that I was doing the wrong thing! Perhaps that pupa could look a little more… incorrect, somehow? Also there are two issues that others have brought up: moving the camera to show a different part of the playfield is way, way too sensitive, and the score at the top of the UI sits on top of the top row of the grid and makes it hard to see. The developer has already acknowledged these, and I’m sure they’ll get fixed. Even despite these, this is a really interesting puzzle game, and fits really nicely into the 64px pixel restriction. Great work!

Full Volley

A full, if simple, game. I didn’t have much of an idea about what good strategy was; I just kinda held down the fire button permanently and moved vaguely around the court, and won 5-1. The graphics has surprising realism; shadows beneath the players, antialiasing and the like; it’s like I’m looking at a video or much higher res imagery, but scaled right, right down (which perhaps is actually the case, depending on what game engine this was built with!) A fun enough diversion, and the developer is not wrong about the 80s hair rock soundtrack :-)

Iceberg 2: Wrath of Don

Little bit of politics :) Actually, this is a game I could completely imagine playing in 1983 or so; escape the enemy, collect the tokens. It’s nicely implemented for what it is, and I like the “Bad Don” frame around it. However, when you (inevitably) run into “Don” (who is very recognisably drawn given the few pixels there are to work with) and get the “we’re doomed” screen, there doesn’t seem to be a way to restart? One has to reset the Pico console. Maybe this is some subtle message (after all, when you’ve destroyed the environment and are doomed, you can’t undo it or start over) but it’s on balance more annoying than it should be :-)

Spider Rider

A complete game, and nicely done. I always know a thing is good when my complaints are about things within the game and not the implementation of it. In particular… man, I hate those solid walls with one gap in them. I run into those all the time. Top score of 335, though, which I’m pretty much OK with after playing a bunch of times. The music’s good (and fits the tone of the game nicely), and the enemies are varied; this would be a launch title if someone put out a 64px gameboy :) One microscopic complaint: the “death” screen which shows your score has the top score value touching the bottom of the screen, and the “score” and “top score” text in a tiny 3x3 font. This makes that screen look less cool than it should; I think that that having the scores one pixel up, and using a slightly larger font, wouldn’t significantly hide the cool background image and would make that screen look so much nicer. That’s honestly the biggest complaint I can come up with, which is a good sign :-)

Jelly Hearts : Gooperts Quest (DEMO)

A fairly basic walk-places-and-attack-things game, but nicely implemented, and the player sprite is quite cute which is cool. Since enemies move around very fast, attacking tends to end up being button-mashing; enter into a room and hammer the space bar to attack until you’ve killed everything. Sometimes a dead enemy drops a heart, which I assume gives health back; one thing missing is that there’s no health bar on screen, which is a bit of a problem because you don’t know how close you are to death. There are also fire squares, and there’s a rather neat effect where touching a fire square not only does damage but turns your sprite a darker colour; increasing amounts of being burned make your player look more and more charred and brown, which is cool. I should also note that the player movement is too smooth; it doesn’t move on the 64x64 grid, but can move in sub-pixel increments. And the music is the same 16 notes over and over; but the developer explicitly calls out that this is a demo and is still under development, and I’m sure all of these things will be fixed with further work!

Conglomecorp

A good concept here, I think. I would agree with other commenters, though; it really suffers from the 64px limitation. I’ve seen the screen essentially be dissolved into what looks like a random collection of pixels and I’ve got no clue what’s going on; this is essentially because the graphics are, I think, at higher resolution inside the game engine and are being rendered and dithered down to fit 64px. A more standard game resolution would likely help a lot with this. I’m also not sure about the overall feel; the ship moves, explicitly, rather slowly (with a “turbo boost” button which speeds it up) and that rather implies that the overall approach is that you pilot slowly, take your time, consider each shot, move gradually and thoughtfully into place, attack from ambush stealth kind of thing. But the first real tutorial is a fast-moving laser space battle between ships, which would much better fit a quick-moving, react-on-instinct, blast-everything twitch style of gameplay. So I don’t know how I’m meant to be playing, which makes me confused. I was also a bit taken aback by having to use a whole bunch of keys to do different things; again, that’s something more suited to a thoughtful slow style of play, which is at odds with the laser battle I’m made to participate in. There’s some good things here (in particular, I think the graphics would look pretty good if they weren’t harmed by being rendered at such a low resolution, and the acceleration audio is evocative and let me know exactly how fast my ship was going), so it will be interesting to see what happens when development continues.

Cybermancer X

Run around and shoot things. The graphics here are very basic, but in a weirdly compelling way I rather like them; it’s stripped back to absolute minimum. As the developer notes, it’s not 64x64, so low rating for that particular thing, but I liked this game rather more than I expected to. As with all games with unlimited firepower, though, there’s no reason to not just hold down the fire button the whole time, which is exactly what I did. I think there are too many controls — left and right are expected, but “fire upwards”, “jump”, “fire”, and “dash” are all separate keys, which is hard to manage in a twitch game like this rather than something more contemplative and thoughtful. There also seem to be some issues with the key handling; sometimes, if you’re firing and running at the same time and then press “jump”, the jump doesn’t register, which is pretty annoying. But this is more fun than I admit I thought it would be at first!

The uke player

Weird concept. The graphics are (deliberately) childishly drawn, and the gameplay isn’t up to much (move around the screen while avoiding obstacles, and that’s it) but it’s given a jaunty, feel-good sort of vibe by the ukulele background music! Not something one would play over and over, but it got a smile and will cheer up people’s days, and there are many, many worse outcomes. A tiny technical complaint; the up and down keys aren’t suppressed by the game, so they also take effect on the embedding web page, which is really annoying; that’s something worth fixing.

Le Chat Fonce: Petite Adventure 2

The Dark Cat goes around collecting coins. This is an old-skool platformer — jump from platform to platform and collect all the tokens until you’ve got enough to win. There aren’t any enemies; your nemesis is missing a jump and falling all the way back down to the ground and then having to climb up again. This is really well implemented, though; the main character is almost featureless but still clear and nicely but simply animated, and the sound design is good. I can completely imagine this being an actual released game in the mid 80s. I think it could be a little bit clearer that a locked door actually is a locked door, though; I found the door to Upper St, and couldn’t get through it, and then later on I somehow had a key and then it opened. I don’t know where I got that key from — presumably I picked it up somewhere? So that was a little confusing. There are also a couple of places where it’s slightly hard to tell whether a platform is a platform or is part of the background. But these are very small complaints! Nice work.

CIA Fish Enthusiast List

Nice work on the graphics. I actually thought, is this really 64x64? And checked, and it is. So you know the developer’s done well there :-) There’s not much to the actual game— walk around, hammer the fish monsters to death — but it’s nicely implemented. The sound is quite good, too; in particular, I realised I was getting cues from it without having to consciously notice them, which is always a sign of good audio design. I’m not quite sure where the CIA fit into this, mind, but perhaps I missed a whole chunk of the game where you put down the axe and invade Cuba or something :-)

The animated GIF screenshots of the game don’t respect the 64px limit, I should note :-) That’s not the game, though, so it doesn’t affect the rating…!

Wildfire

Lovely little Sokoban-style puzzle game, with an interesting frame story. It’s not very difficult (I won third time out), but I think that this could be the basis for a real game with loads of levels, and I’d happily play it. (The first two times I failed, one of them was not realising that one may need the fire to burn away obstructions before killing it, and the second was trying to pick up Mr Bernt himself to take him to the cabin, at which point I discover that… well, that that doesn’t work, and it made me laugh, but I won’t spoil it for people reading this!)

Oh, and I liked the “dollarone” scrolling credit as the game opened. Nice.

The Adventure

Charming little platformer. The player is a very engaging little fellow, and he moves fast and jumps high, both of which are good and contribute to a very flowing feel. He’s pretty vulnerable, though; I died all the time, through accidentally walking into enemies. And although I really liked the hole falling animation and look of surprise the first time around, it’s much less cute on repetition after I’ve died a bunch of times and have to wait through it. Also, having space for jump and X for attack is really rather awkward to control; the up arrow for jump would be considerably easier. There’s a nice vibe about this generally, though; with some polish, this could be a fun little dungeon explorer game.

The mysterious case of Lord Bolton

The beginnings of a good little game here, I think. It does a fair job of providing a slightly creepy atmosphere; the picture of the tentacled guy along with an audio “sting” actually made me jump a little, which was prety cool. However, once I’d found the lever and the key and then opened the gate, the game ended! This may be because it’s really just a proof-of-concept demo for the jam, but I feel like I missed out on something; some explanation, or some conclusion. If this is really just a trailer and will continue to be developed into something larger then I think it’s done its job as a teaser and to prove the tech works ok, though, nice work! One minor complaint: the tables being made of the same texture as the floor makes them ratehr invisible. I couldn’t understand why I was unable to walk further into a room, until I realise that there was a table in the way. This could be solved with shadows, or making the tables be made from a slightly different material than the flooring.

Everyday Struggle

A game about anxiety. I haven’t been in the right frame of mind to play this properly yet and so I won’t rate it because that would be unfair, but it’s courageous of the developer to put this out there, and I applaud that.

Gossamer Girls

Excellently fun game. I took a little while to grasp the exact mechanics — for example, I didn’t realise that bullets were limited for ages, because you start off with a lot, and so I didn’t know what the point of picking up the Xs that dead enemies leave behind was — but that didn’t take long to work out. Good distribution of reward chests and enemies (and a good variety of reward chests too!), and the footsteps being left behind in areas you’ve explored is a really nice touch. A minor complaint: the low “dong” noise you get when you pass through an “empty” square in the between-levels bonus pickups screen makes it sound like you’ve made a mistake in some way. Beyond that (and the enemies looking a bit too basic graphically which is out of place with the rest of the game), I have no complaints at all. Top fun.

A’maze’ing

A simple Bitsy maze game. Sadly, it’s in violation of the 64x64px requirement; it seems to be on a 128x128px grid, which means it’s got twice as much resolution as the jam dictates. Beyond that, it’s a maze game; move around, collect the key, open the door. The maze being on multiple screens is a nice touch; this feels rather like a first game for the developer, and it’s perfectly playable, if basic; finishing a game is important in itself. Hopefully they’ll go on to bigger and better things; a complete game would also have audio, a more detailed title screen, and some measure of extra challenge, and that’s something the developer can work on in future games to make them more accomplished. Good first effort!

Cave-Trapped

What a fun idea! There have been lots of games in this jam which have done well despite the 64px limitation, but this is the only game I’ve seen which thrives upon that limitation and actually puts it to use. The spider’s path being much more complex in a way that the person doesn’t see, because it’s too small for them to notice, is a really clever way to take advantage of the limited size: if you’ve not got much space, zoom it up even further and show all the hidden detail! Very impressed. I also like the graphics; the spider is cute, despite being only six pixels. Evocative. If I have a complaint, I’d say that the difficulty curve is quite high; the first couple of tutorial levels don’t show any complexity but instead just explain the mechanics, which is fine, but then the very next level is rather complicated as we suddenly introduce the idea that the spider’s path is very convoluted. This is not helped by the spider’s physics; it can walk over gaps or fall in an arc as long as it’s moving fast, but I didn’t realise that for ages because when contronted with a puzzling path I move slowly to explore different details. So I kept falling through gaps, and assumed that the goal was to work out how to approach the other side of the gap from a different direction, not that the gap isn’t meant to be a barrier at all as long as you’re walking at speed when you hit it. But these are small issues; the concept here is great, and I like this game a lot.

The Riddlebox

Find the one important object which solves the riddle and bring it back to the starting room. This seems deliberately designed to punish the player; you must bring one object and only one back in order to win, and it needs to be the right one. The actual pictures of the objects are, in most cases, not detailed enough to be able to tell exactly what an object is, so I assume that there’s no way to win other than to repeatedly try each of the objects, fail, die, and start again, over and over. The “learn by dying” game method, in other words. Also, the game seems to be built on a 128x128 resolution rather than 64x64, but since the graphics don’t really need the extra resolution I assume this was an oversight rather than a deliberate attempt to ignore the rules. Anyway, not much of a game, but maybe the next one will solve some of these issues!

Star Raid

Nicely done, with a very retro feel. At first I was annoyed by the slow movement, but after a while I got quite into it; you are a space explorer, after all, and gravity is weird. I got above 200 coins, and the secret rooms were interesting to find. There seems to be some weirdness with jumping onto platforms above and to the side of oneself; my feet don’t reach the platform (although my body does) and I sorta “glitch” onto that platform anyway. This could probably be solved with a tiny little animation, much like the (excellent) one where our little explorer does a three-point “superhero” landing when falling from a height.


And, of course, now you’ve looked at all those, you should go and play my game…

Pipe Flip

This jam was good fun. Thank you to Jack Oatley for organising it! And thanks to Alan Pope for playtesting.

One of my major limitations in game writing is that I am supernaturally, volcanically bad at graphics. So something like Lydian, the winning game, is completely beyond me to create, sad to say. This is why I made a puzzle game; the graphics in it are simplistic, to say the least. A few sprites of pipes, and the creeping fluid, and the entry and end screens. One of the advantages of the lowrezjam specifically is that you don’t have to create screens on the fly with code; you can just literally pre-render a bunch of them as PNGs and load those PNGs, because they’re only 64x64 pixels, which is tiny; the title screen, with logo and big PLAY button, is a 1.4KB png file which I just load into place. That’s pretty useful. I also made the game with pure HTML, CSS, and JavaScript; it’s not using a game engine which renders to a <canvas>. All of the things on screen are actually HTML elements. One of the nice advantages this gives is that mobile support is pretty easy, because browsers are already good at that; if I show the thing on screen, the browser handles clicks and so on for me. I can use all the CSS I want, so to scale a thing I don’t need to work out scaling algorithms myself; I just do everything at 64x64, and then apply transform: scale(10) or whatever to the whole containing element to make it bigger. (Pro tip: if you want to do that, and you want it to scale up, pixelated, then apply image-rendering: -moz-crisp-edges; image-rendering: crisp-edges; image-rendering: pixelated; to the thing you’re scaling, and then it’ll scale pixel by pixel, rather than blurring everything. That doesn’t work on fonts, annoyingly, but the rest is fine.)

Another thing I learned was that reviewing other people’s games helps. I grabbed all the results from the jam and put them in a spreadsheet (you can download the CSV file here), and I discovered something. You see, I came 69th overall, which out of 170 isn’t too bad. But I got more reviews on my game than almost anyone; Pipe Flip had 27 reviews and only two games got more than that. I am pretty confident that that happened because I wrote the above set of reviews, and posted them to each game, as the jam was going on. To review a game as part of the jam you have to have entered the jam; what this means is that when you get a review, you know that the reviewer also entered something. And I did my best to write meaningful reviews; not just that a game was good or bad but also what was good or bad about it, suggestions for improvements, applause for things that worked particularly well. I certainly wasn’t the only one doing this, but I think it helped; I not only got a bunch of useful feedback on Pipe Flip but I also had comments back from developers responding to my thoughts on their own games; I think this encouraged them to review mine. Of course, next I need to write a game which people review with higher scores, but that’s for next year :-) And in the meantime, there’s a message here; participate. We’re all in this together; everyone in the jam is looking to hear detail about their own games, whether good or bad, because it makes us all better game developers.

Anyway, that was the LOWREZJAM, 2018. I enjoyed it. Roll on the next one.

Emoji Silhouettes with CSS, a second approach

$
0
0

Every now and again it’s useful to display single-colour emoji on a web page; all the colours in those little emoji symbols are nice and all, but it does occasionally make your formal document look a bit like an angry fruit salad. I’ve seen a technique for this before (in particular from Bram van Damme, but searching for “emoji silhouettes” finds lots of other people doing it too), where you set the text colour to transparent and then set a text-shadow, and you’re done. This is nice, but it doesn’t work for me in Firefox, sadly; if you set the text color to transparent then indeed your emoji disappear, but if you set a text shadow they come right back, and in full colour.

So, I do it a different way, akin to the ancient and well-known image replacement method; set a text-indent on the element containing your emoji and then reverse that text indent in the text-shadows offset-x position. So you set text-indent to something massive and negative like -2000em so it’s definitely off the page to the left, and then a text-shadow (which, we recall, is specified as text-shadow: offset-x offset-y blur-radius color) of plus 2000em to put the text shadow back where the original characters were before they were indented miles to the left.

<style>
span.emoji {
    text-indent: -2000em;
    text-shadow: 2000em 0 0 red;
}
</style>
...
<p>And here are some emoji silhouettes:
    <span class="emoji">🚀 🎭 </span>.
    Aren't they nice!<p>

And here are some emoji silhouettes: 🚀 🎭 . Aren’t they nice!

You have to wrap your Unicode characters in their own little span, which is a bit unfortunate, but then you have to with other approaches too. (And your span has to be display: inline-block or block too, otherwise the text-indent gets ignored.) Anyway, not earth-shattering, but I quite like it.


After this was originally posted, Garrett LeSage suggested a different approach, using CSS filters. These are quite a lot more powerful than one might think. His approach applies a set of CSS filters in concert, like this:

Set the contrast on your emoji to high with CSSfilter: contrast(0): 🚀 🎭

Use a sepia(100%) filter to colorise: 🚀 🎭

Set the colour to one of your choice with hue-rotate(180deg): 🚀 🎭

And finally pump up the saturation with saturate(1000%): 🚀 🎭

The up-side of this approach is that it’s one line of CSS; you don’t need to set inline-block, or worry about defining a width on your “emoji” element. The down-side is… well, you may be thinking, “where do we specify that we want the final colour of the emoji to be red in that code above?” And you would be right. You have to do some crazy maths calculations to actually work out how to set your emoji to the colour you want. Barrett Sonntag wrote an interactive filter generator to calculate the set of filters required to set your colour to the thing you choose, based on some Stack Overflow answers. I think this downside is enough to lean me away from this method, personally, but it’s another approach if you prefer it!

Viewing all 158 articles
Browse latest View live