Category Archives: Games

LEGO Pick-a-brick container sizes, dimensions and capacity

There are three Pick A Brick containers – The 950ml tumbler, 475ml tumbler and 30ml lid. I have measured the volume of these containers using a 0.1g scale and water; I have high confidence in the measurements. Other measurements have been taken with callipers and rulers; I have lower levels of confidence in those numbers.

The lid’s stud (where you can store LEGO if you’re particularly cunning) is 48mm diameter and approximately 16mm deep – six studs in diameter by two studs deep. This means you can’t fit something six studs wide (48mm) into it, because LEGO bricks aren’t 0mm tall or long. You might be able to store one 1×6 plate if you jammed it in, as plastic objects are plastic (bendy).

The 475ml tumbler has a profile matching that of the 950ml tumber, cut off at the bottom. They share an opening of over 100mm. They both have an indentation that matches that in the lid, allowing stacking. The displacement of the indentation of the base is 55mm wide and has three strengthening piers projecting into the interior of the base.

The length of the interior wall top-to-bottom depth of the 475ml tumbler is 76mm; it can hold 1675 1×1 round plates. The top-to-bottom depth of the 950ml tumbler is 170mm.

BrickLink API PushNotificationMethod Get Notifications callback semantics

The documentation for the BrickLink API PushNotificationMethod suggests that the data sent to the URL you registered on the BrickLink API Consumer Registration Page is sent to this URL (via a POST verb, by the way) and as such you don’t need to call Get Notifications. Given the body of the POST is empty, this is not right – what you instead need to do is use any POST to your registered URL as a prompt to call Get-Notifications. It’s probably best to periodically call it too, given “it does not guarantee delivery of all events” and doesn’t either based on my experience.

A notification to be created when:

  • Order
    • You received a new order.
    • Buyer updates an order status.
    • Items of an order are updated (added or deleted).
  • Message
    • You received a new message.
  • Feedback
    • You received a new feedback or reply

Also note: NULL fields are not included in the returned JSON. Some fields names don’t match the documentation (eg: drive_thru_sent instead of the documented sent_drive_thru).

If your XBox One game disc is faulty, you can install the game from the network

I was going to blog about this some time ago, but it slipped my mind. Better late than never.

I bought an XBox One, and some games. Then I looked for secondhand games, and bought one or two, mostly stuff you can’t buy new anymore, like Halo remastered and Star Wars – Battlefront.

The Star Wars disc turned out to be faulty. The shop would happily take it back, but didn’t have a replacement they could give me.

It turns out that, provided it can be at least partially read, you can use the disc to prove to the XBox that you own the game, then install it off the network.

It’s easy: pop the disc in, cancel out of the installation, then go to the XBox store and find the same game. It’ll give you an install option, which will download it from the servers.

Unlike a game bought online, you’ll still need the disc in the console to play the game.

Neato.

(Source: This Reddit tip)

Securely run a low memory/low CPU Minecraft server

If you’ve got next to no memory and CPU available to run a Minecraft server, don’t fret. Cuberite is what you’re after. At them moment, Cuberite isn’t bug-free, nor indiscernible from a genuine Minecraft server, but it’s quite usable – and instead of needing 4GB+ of RAM, it needs less than 300MB. And it needs next to no processing power: some people run Cuberite on their Raspberry Pi and have plenty of CPU available.

I would at this point go on about how this is a significant point of difference between C++ and Java, but Java optimizes for something different to C++.  I got into an interesting discussion with Cathy about this after reading a question someone had about what Java was trying to be good at. I used to think that VB was the new COBOL, but clearly Java is the new COBOL; those Java programs are going nowhere, they’re verbose and easy to understand and maintain.

A point to note: The Minecraft protocols are bandwidth heavy, I found if I wanted to run a server at home I’d be able to have one, perhaps two players. Thus is Internet in Australia. Instead I’ve dropped this onto a free AWS VPS instance and bandwidth is no problem.

Still, it’s a random piece of software off the Internet, so we’re going to give it its own user account for our own safety. Let’s install the software:

curl -sSfL https://download.cuberite.org | sh
sudo mv Server /usr/local/cuberite
cd /usr/local/cuberite

Cuberite allows configuration through a web interface.  We now enable webadmin.ini
[User:admin]
; Please restart Cuberite to apply changes made in this file!
Password=yourstrongpassword
[WebAdmin]
Ports=8080
Enabled=1

Port 8080 is the alternative html port (http/https).  You could cd into webadmin and run GenerateSelfSignedHTTPSCertUsingOpenssl.sh and get https serving, but your browser will barf on the certificate. Instead, let’s use a LetsEncrypt certificate, one that we installed earlier. First we make our one-line shell script for running the daemon:

sudo useradd -c "Cuberite server" -f -1 -M -r cuberite
chown -R cuberite:`whoami` /usr/local/cuberite/
sudo nano /etc/init.d/cuberite.sh

#!/bin/sh
### BEGIN INIT INFO
# Provides: cuberite
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: cuberite
# Description: Cuberite server, a Minecraft server lookalike
### END INIT INFO
cd /usr/local/cuberite
sudo -u cuberite /usr/local/cuberite/Cuberite -d &

Next we set it going when the box starts up:

sudo chmod +x /etc/init.d/cuberite.sh
sudo update-rc.d cuberite.sh defaults

Before we can go to the website we need to allow user cuberite to get to the certificates:

sudo groupadd privkey_users
sudo usermod -aG privkey_users cuberite
sudo sudo chmod g+rx /etc/letsencrypt/live/
sudo sudo chmod g+rx /etc/letsencrypt/archive/
sudo chown root:privkey_users /etc/letsencrypt/archive/
sudo chown root:privkey_users /etc/letsencrypt/archive/example.com/
sudo chown root:privkey_users /etc/letsencrypt/archive/example.com/cert1.pem
sudo chown root:privkey_users /etc/letsencrypt/archive/example.com/chain1.pem
sudo chown root:privkey_users /etc/letsencrypt/archive/example.com/privkey1.pem
sudo chown root:privkey_users /etc/letsencrypt/archive/example.com/fullchain1.pem
sudo chown root:privkey_users /etc/letsencrypt/live/
sudo chown root:privkey_users /etc/letsencrypt/live/example.com/
sudo -u cuberite ln -s /etc/letsencrypt/live/example.com/cert.pem /usr/local/cuberite/webadmin/httpscert.crt
sudo -u cuberite ln -s /etc/letsencrypt/live/example.com/privkey.pem /usr/local/cuberite/webadmin/httpskey.pem

Changing these permissions doesn’t affect apache2’s ability to get them.
The reason we’ve used a group here is to allow both Cuberite and any other app (for example, exim) to access the private keys; just add any other user that needs to use the private keys to the privkey_users group.

Remember to punch a firewall hole for port 8080. Fire up Cuberite now:

sudo service cuberite restart

And check if that worked, there should be about one entry:

ps -aux | grep cuberitps -aux | grep cuberit

If not, you can check in the logs directory to see what’s wrong.

So now:

sudo lsof -i :8080
https://example.com:8080/

should be secure.  Note the https is mandatory, as your browser will use http if you fail to specify a protocol.

Where do you wake up from a bed in Minecraft?

After issuing many /time set night commands, I can tell you the waking-location algorithm for Minecraft. This presumably also affects your spawn point.

Two locations are checked, and if they fail to select an acceptable location the pillow-location is used regardless of consequences of picking this location. An acceptable location is on the same level as the bed, and has two transparent-non-solid blocks above it (i.e. you will be standing next to the bed without your head or body embedded in something that’s killing you).

The process is the same for each of the two locations:

Sweep x-1 to x+1:
  Sweep z-1 to z+1:
    if the location is acceptable, we're done

The locations are checked in the order: pillow-part-of-bed, non-pillow-part-of-bed. The effect is:
From the Minecraft wiki:

For a bed to be usable as a spawn point, the player must be able to stand next to the bed at the same level as it. There must be a solid block at the same ‘floor’ level as the bed, with 2 transparent blocks of space (for example, air) for the player to stand in, in one of the ten blocks that surround the bed. It doesn’t matter if the bed itself has blocks above it.

Diablo I (yes, Diablo 1) LAN play on Vista or Windows 7

– and presumably 8.

There’s various convoluted steps to get LAN play working on more recent versions of Windows.

Mount the ISO on your hard drive, and use the somewhat unstable Microsoft supplied ISO mounting program to fool the program into thinking you CD is in a CD drive.  Install Diablo from here.  This step is not strictly necessary, but it’s so much quicker and cleaner than the alternatives.

Fetch and apply the patch to bring Diablo 1.00 up to version 1.09.  It may also be helpful to pull up the properties of the .exe and enable compatibility mode with WinXP Service Pack x. When fetching patch, get it for the version you’re installing – much confusion is caused if you get the spawned Diablo patch and apply it to the full version.

Go and get IPXWrapper, and per the instructions drop the DLL files into your Diablo directory. If you have a heterogeneous environment, all machines need to use this wrapper – IPXWrapper is a translation layer than transforms IPX into UDP, and without it IPX aware OSes like WinXP won’t see the network traffic of the IPX unaware OSes like Vista.  Punch a hole in your Windows Firewall to allow UDP port 54792.

To fix the palette issue, download the registry patch, which seems to work under Vista as well:

32-bit Windows 7 – http://ftp.blizzard.com/pub/diablo/d109_x86.reg
64-bit Windows 7 – http://ftp.blizzard.com/pub/diablo/d109_x64.reg

See?  Easy.  Doesn’t take more than a few hours if you don’t know what you’re doing.

Doctor Who games

The Good Game reviewers have spoken:

‘a steaming pile of garbage’. The first real Doctor Who game on the DS isn’t just bad; it’s one of the worst misuses of a license I’ve seen.

…and…

Set a few hundred years after the DS game, Return sees the Doctor and Amy investigating some strange signals coming from the vicinity of Jupiter. They come across the strangely deserted SS Lucy Grey. They then have to fight for their lives against shoddy gameplay mechanics and one of the worst cameras I’ve endured in years.

Sounds like they both pale in comparison with the PC games put out earlier in the year. What a shame.

Donkey Kong on 12 different 80s platforms

Part 1: Atari 2600, Intellivision, Colecovision, NES, Commodore 64, IBM PC (DOS), Apple II

Part 2: Vic 20 (dodgy emulator?), TI-99/4A, Atari 8-bit computers, Amstrad CPC, ZX Spectrum, Atari 7800

With adaptions from an arcade original that had a screen that was higher than it was wide, there’s an obvious compromise to be made between the clarity/resolution of the characters, their aspect ratio, and the number of girders to the top — eg compare the Atarisoft Commodore 64 version with the Ocean one. Some versions look very squashed.

Most surprisingly good I reckon was the TI version.

Via Retroist

Google Pac-man!

To celebrate Pacman’s 30th anniversary, Google’s banner today is not only Pac-man-based, it’s a playable game if you wait for a few seconds.

Google Pacman

And yes, if you clear the first two boards, you get the traditional cut-scene.

Google Pacman

Google Pacman

Is that totally awesome or what?

Am I correct in thinking it’s not actually written in Flash, but in some clever HTML-type thingy?

Update: Yes. CNet reports: ccording to Germick, the company worked with Pac-Man’s publisher, Namco Bandai, to make the project as realistic as possible. Yet the Google team, with the inspirational lead of Marcin Wichary, a Google senior user experience designer, built their version of the game from the ground up using JavaScript, HTML, and CSS.

Update 4pm: If you click Insert Coin twice, you get a two-player game (W/A/S/Z controls Ms Pac-Man). And there is one minor bug I’ve noticed — sometimes when chasing ghosts after eating a power pill, you can pass right through them.

Update 9:30pm: Google Pac-Man: The FAQ + Kill Screen Winners — contains more details on how it was written, where to find it when it’s gone from the main Google page, and a picture of the”kill” screen.

Update Monday: It’s gone from Google’s home page now, but is still online here: www.google.com/pacman