SWGEmu – 2019 Verbose Server Setup Guide (for Devuan Linux)

Far and away, the most popular post on this blog has been the original “SWGEmu Verbose Server Setup Guide“, so as a sort of parting gift to the handful of readers of this blog, I figured I would post an up to date version of the guide that works with the current iteration of the SWGEmu source code. I’ve decided to keep the blog live after I stop paying for “no-ads”, but I will be posting new content over on GitHub Pages rather than here.

SWGEmu Simple Server Setup using Devuan 2.0 ASCII

This guide is for people who want to setup a custom SWGEmu server, but aren’t interested in using SWGEmu project’s ZonamaDev tool. If you plan on contributing to the SWGEmu project, it’s better to use ZonamaDev, because it’s the standardized work environment for their project and they will help you solve problems with it. Using this guide will give you a working system that will build and run the server code, but you’re on your own for tech support.

Devuan 2.0 is Debian 9 without SystemD. It uses Xfce as its default desktop environment, which is convenient, because it’s both efficient and easy to use. While one could setup a server and build environment without a GUI, Xfce is so small and handy that it may as well be used, given how powerful and cheap PCs are these days.

Keep in mind that it’s not a good idea to use the generic passwords that I have provided in this guide if you’re going to be using the resulting system to host a public server!

1. Download and install VirtualBox
– I used version 5.2.16 in Window 10 Home 64Bit
https://www.virtualbox.org/wiki/Downloads

2. Doanload the “netinst” network installer image for Devuan
Main Page: https://devuan.org/get-devuan
Direct File: https://mirror.leaseweb.com/devuan/devuan_ascii/installer-iso/devuan_ascii_2.0.0_amd64_netinst.iso

3. Open VirtualBox and create a new virtual machine.
– Click the New button
– Name: My SWGEmu Server
– Type: Linux
– Version: Debian 64bit
– Memory: 2048MB minimum, more is better though, so use most or all of the green area if you won’t be doing much with the host system as well.
– Create a new virtual hard disk now
– VDI (VirtualBox Disk Image)
– Dynamically allocated
– 20GB

The final size of the VirtualBox image file will only be about 6GB on the disk, but it can expand up to 20GB without you needing do anything, which is nice – probably unnecessary, but a nice potential time saver down the road.

4. Configure the setting of the new virtual machine.
– Click the settings button

General Window > Advanced Tab
– Shared Clipboard: Bidirectional

System Window > Processor Tab
– CPU Slider: Set it to the max green area.

If you have 6-8 CPUs available, but only 3 or 4 are shoring in the green area, in my experience with AMD FX processors, it’s safe to use up to 4 of 6 or 6 of 8. More CPUs exposed to the virtual machine will reduce the compile time of the SWGEmu server considerably.

– Extended Features: Enable PAE/NX

System Window > Acceleration
– Paravirtualization Interface: Default
– Hardware Virtualziation: Enable VT-x/AMD-V and Enable Nexted Paging.

Display Window > Screen Tab
– Video Memory: 64MB or more

Storage Window
– Background Information: This is where you can add “loop back file systems”, in the form of a new VDI files, which can be mounted in Linux as extra storage. The nice thing about Unix-like operating systems is that other devices, such as remote computers, other hard drives, or one of these loop back files, are seamlessly grafted onto the file system, so the OS treats it like any other part of the file system. You can use this for such things as using “mount bind in your fstab file” to put the Berkeley DB files for the server into their own file or just having a handy Linux formated backup file that is located on a different hard drive than the VDI file for your OS.
I personally have a small solid state drive (SSD), so I have my OS VDI file on the SSD with only a 512MB swap partition inside it to save space on the SSD. To augment the limited amount of swap space, I have another 8GB VDI file on my much larger normal hard drive, which acts as a Linux swap file. Linux allows for setting the priority of swap space, so it will first write to the fast 512MB on the SSD, and if that gets full it will use the slower, larger 8GB on the hard drive. Generally speaking, the swap space rarely gets used at all, even when compiling. There’s lots of powerful customizations you can come up with here, if you’re willing to research on how to use it!

– Storage Tree: Click your FILENAME.vdi and if it is installed on an SSD, put a check in the Solid-state Drive box that pops up on the right side of the window.

Network Window > Adapter 1 Tab
– Attached to: Bridged Adapter

This will allow the virtual machine to get an IP address directly from your router, but we are going to setup a static ip address in Linix so that the game client can always find the server.

Shared Folders Window
– To save some sanity and storage space, you can have one folder to store the TRE files for both the game client and the server. It’s really easy to do by first sharing the game client folder in Windows (right click the folder > Properties > Sharing Tab > Share button > choose “Everyone” in the drop down and click the Share button), then accessing that shared folder from Linux in the virtual machine. . The Windows share will need to be given a name, I suggest calling it SWGEmu.

– Click the [+] button the right
– Folder Path: Other > Navigate to where you have SWGEmu installed > OK > OK

5. Install Devuan Linux
– Make sure you are connected to the internet.
– Select your VM and click the Start button
– In the Select Startup Disk window, navigate to where you saved the iso file for Devuan, select it, press Open, press Start
– Use the keyboard arrow keys to select Graphical Install and hit the Enter key.
– Language: Select yours!
– Country: Select yours!
– Keyboard Conig: American English is the default
– *wait a while*
– Host Name: swgemu (or any other single word you’d like)
– Domain name: leave it blank
– Root Password: 123456 or anything else you would like. 🙂
– Username: swgemu
– Username for account: swgemu
– User password: 123456 or anything else you would like. 🙂
– Timezone: Select yours!
– Partitioning: Guided – Use entire disk

If you know lots about Linux or you want a custom partition setup, this is the step where you can set that up. There are lots of guides on the internet to help you with this step. However, the default “Guided – Use entire disk” will suffice!

– Had disk selection: It’s the VDI you created earlier, so just click continue.
– Partitioning: All files in one partition (recommended for new users)
– Partitioning: Finish partitioning and write changes to disk
– Warning Message: Select Yes, press Continue again. 🙂
– *wait a while*
– Configure Package Manager: Select your country
– FTP Mirror: default Devuan mirror
– HTTP Proxy: Generally speaking, leave this blank. If you need to setup such a thing, look up how to do so on the internet.
– *wait a while*
– Popularity Contest: No
– Software Selection: Devuan desktop environment, Xfce, standard system utilities
– *wait a while*
– Grub boot loader: Yes
– Device for boot loader installation: /dev/sda (the VDI hard drive)
– Installation Complete: Continue and the system will reboot

6. Configure the desktop
– First system boot: login with swgemu / your password
– Panel (toolbar) config popup: Select single empty panel
– Grab the panel drag it to the top or bottom of the screen.

– Right click Panel > Panel Preferences
– Set the length to 100%, Row Size to 26 or so, and click Lock Panel
– Click the Items tab in the and add the following stuff to the toolbar: Applications Menu, Window Buttons, Separator, CPU Graph, Notification Area, Workspace Switcher. Feel free to add anything else you’d like too, of course.

– Right click the Separator on the Panel (it’s a vertical line) > Properties > click the Expand box and change the style to Transparent if so desired. This makes the Panel function the same as the Windows Taskbar.

7. Configure the Sudo
– Open a terminal and add the swgemu user account to the sudoers file
su
*enter password for the root user account*
visudo
*arrow down to the line below root ALL=(ALL:ALL) ALL and type*
swgemu ALL=(ALL:ALL) ALL
*ctl+x, yes save the file, press enter*
exit
sudo apt-get update
*enter password for the swgemu user account*

The system is already up to date, due to the network installer downloading the latest versions of everything! 🙂

8. Configure VirtualBox
– Install the system software we will need to use the VirtualBox Guest Additions
– Open a terminal
sudo apt-get install build-essential dkms linux-headers-amd64 linux-headers-4.9.0-6-amd64

– In the VirtualBox window click Devices > Insert Guest Additions CDROM image…
– Applications Menu > File Manager
– In the File Manager click the CD icon that is labeled VBox_GAs… to mount the CDROM image.
– File > Open Terminal Here
– In the terminal type
sudo sh VBoxLinuxAdditions.run
– reboot (Applications Menu > Logout > Restart)
– Login again and rejoice in your ability to copy and paste between the host and the guest!
– Open a terminal and add the user to the VirtualBox share group so it can access the Windows shared directory.
sudo adduser $USER vboxsf

9. Install the other software that is required and is available from Devuan/Debian
– Open a terminal
sudo apt-get install git autoconf libdb5.3-dev gdb libtool libreadline-dev libdb-dev libssl-dev libboost-dev openjdk-8-jre openjdk-8-jre-headless mariadb-server-10.1 mariadb-server-core-10.1 libboost-dev libdb5.3 libmariadbclient-dev-compat cmake
– This will install a bunch of other packages automatically, which is normal/good.

10. Install Lua 5.3.2 from source
– Open a terminal
cd ~/Downloads
wget https://www.lua.org/ftp/lua-5.3.2.tar.gz
*wait for it to download*
tar xvzf lua-5.3.2.tar.gz
cd lua-5.3.2
sudo make linux install

– If it gives the errors:
install: cannot stat ‘lua’: No such file or directory
install: cannot stat ‘luac’: No such file or directory
– just press the up arrow and run “sudo make linux install” and it will properly copy the newly compiled binary files to the system directories…

11. Clone the SWGEmu server software
– Open a terminal
mkdir workspace
cd workspace
git clone http://review.swgemu.com/p/PublicEngine.git
*wait a while*
git clone http://review.swgemu.com/p/Core3.git
*wait a while*

You now have two new directories with the SWGEmu software:
/home/swgemu/workspace/Core3
/home/swgemu/workspace/PublicEngine

12. Configure the SWGEmu environment
– Build the idl compiler and put it in the system path
– Open terminal
cd ~/workspace/PublicEngine/MMOEngine
chmod +x bin/idlc
sudo cp bin/idlc /usr/local/bin/idlc
– Add the idl compiler to the class path so Java can find it
echo ‘export CLASSPATH=”/home/swgemu/workspace/PublicEngine/MMOEngine/bin/idlc.jar”‘ >> /home/swgemu/.profile
– Add a symbolic link to MMOEngine so Core3 can find it
cd ~/workspace/Core3
ln -s ../PublicEngine/MMOEngine MMOEngine
– reboot

13. Configure and build SWGEmu
– Open a terminal
cd ~/workspace/Core3/MMOCoreORB
git checkout unstable
git pull
– Note: You should have already been on the unstable branch and up to date.
make config
make cleanidl
make -j4 build-cmake
– Note: use make -j# where # is the number of cores you allocated to the virtual machine. When in doubt, count the bars in the CPU graph on the Panel.
*wait a while*

14. Give the server access to the game client files
– The server references a significant amount of data directly from the files that get installed with the game itself (“TRE” files). As such, you will need to install SWG from your original CDs, download the official SWGEmu launcher, and run the launcher so it can update your SWG installation to be compatible with SWGEmu.
– As suggested in step 4, you can simply point your virtual machine to the Windows folder where you installed SWGEmu, thus granting the server access to the TRE files that it needs. Alternately you can open that shared folder from the VM and copy the TRE files into the VM itself. I’ll describe how to do both; you can choose which suits your needs.

Pointing to the TRE files on the Windows host system:
– The windows share is automatically mounted at /media/sf_SWG
– Open /home/swgemu/workspace/Core3/MMOCoreORB/bin/conf/config.lua (with the default text editor, Mousepad, by double clicking the file).
– Scroll down to
TrePath = “/home/swgemu/Desktop/SWGEmu”
– and change it to
TrePath = “/media/sf_SWG”
– Save the file and close it.

Copying the TRE files into the virtual machine:
– Open a terminal
mkdir ~/Desktop/SWGEmu
cp -v /media/sf_SWG/*.tre ~/Desktop/SWGEmu

15. Set a static IP Address
– In Windows open a command prompt
Start > Search Box > Type cmd > Hit the Enter Key

– Get your computer’s IP address
ipconfig

In the output, look for the heading Ethernet adapter Local Area Connection. Under it you will find your IPv4 address, which could look like 192.168.0.112 or 10.0.0.47 or 192.168.1.101 on most home networks. The fist three numbers in those chains are the network address and the last number is your computer on the network. Your router (also referred to as a ‘gateway’) is most often the first device on the network, so its number would look like 192.168.0.1 or 10.0.0.1 etc. For your Linux VM, you want to use a unique number that won’t be used by another device as well. 87 is a safe bet!

– In the VM, create the static IP address, being sure to edit the correct ip addresses for your network.
– Open a terminal
sudo nano /etc/network/interfaces
– Arrow down and comment out the following line by putting a # before it
iface eth0 inet dhcp
– Add the following lines
iface eth0 inet static
address 192.168.0.87
netmask 255.255.255.0
gateway 192.168.0.1
– ctl+x to exit and save the file.
– reload the network interface to use the static ip address (or reboot)
sudo /etc/init.d/networking reload

16. Configure the MySQL database server
SWGEmu uses two database technologies, MySQL and Berkeley. The MySQL server is used to store account related information, such as character names, passwords, permission levels, and other various other bits of data. The majority of the “game data” that makes up the world, such as quest states, event timers, inventories, etc. is stored in a series of Berkeley database files. You don’t need to configure anything for the Berkeley DB, but you do need to setup the MySQL DB.

– Open up a terminal and configure the root password (to 123456). Initial password is blank. Answer Y to all questions.
sudo mysql_secure_installation

– Create the database
echo ‘CREATE DATABASE swgemu;’ | sudo mysql -uroot -p123456
echo ‘GRANT ALL ON *.* TO `swgemu`@`localhost` IDENTIFIED BY “123456”;’ | sudo mysql -uroot -p123456

– Install the SWGEmu database templates
mysql -p123456 -e source -e ~/workspace/Core3/MMOCoreORB/sql/swgemu.sql;
mysql -p123456 swgemu -e source -e ~/workspace/Core3/MMOCoreORB/sql/datatables.sql;
mysql -p123456 swgemu -e source -e ~/workspace/Core3/MMOCoreORB/sql/mantis.sql;

– Update the server IP address in the SQL database
mysql -p123456 swgemu -v -e “update galaxy set address=’192.168.0.87′”

17. Boot the server for the first time
– Open a terminal
cd ~/workspace/Core3/MMOCoreORB/bin
./core3

– You will notice some error messages like the following, because only the planet Tatooine is enabled by default.
ERROR: Unable to load screenplay SidorasBey, zone rori is not enabled.
– If all is well, you will see the following message:
(47 s) [Core] initialized
– After that, the first time the server boots it will calculate the navigation meshes that are used by the AI, which can take a long time (and must be done for every planet).

18. Configure the game client
– Go to the directory on the host system where SWGEmu is installed…

– Edit swgemu.cfg so that it reads:
.include “swgemu_login.cfg”
.include “swgemu_live.cfg”
.include “swgemu_preload.cfg”
.include “options.cfg”
.include “user.cfg”

– Edit swgemu_login.cfg so that it points to your server:
loginServerAddress0=192.168.0.87

– Edit user.cfg for Godmode, multiple instances, frame rate, and extra information when examining items:
[SwgClient]
allowMultipleInstances=true

[ClientGame]
freeChaseCameraMaximumZoom=10
0fd345d9 = true

[ClientLimits]
SetFramesPerSecond=68

[ClientUserInterface]
debugExamine=1

19. Log into the server with the game client on the admin account
– Username: swgemu
– Password: 123456
– Log out and close the game.
– On the server, open a terminal and give the swgemu game account admin privilages
mysql -p123456 swgemu -v -e “UPDATE swgemu.accounts SET admin_level=’15’ WHERE username=’swgemu'”
– Log back into the game on the swgemu account a create a character that will now have “God Mode” privilages.


That’s all that is really needed to run a server. You could even forgo using the Xfce desktop and only install the basic command line of Devuan, but it only saves about 3GB of hard drive space by doing so, which isn’t much in today’s world. Also it should be noted that you can skip all the VirtualBox stuff and simply install Devuan directly onto the hard drive of a real computer and then copy the TRE files from your desktop to your server using a USB stick. Nothing says you must use a virtual machine, it’s just much more convenient in today’s world of multi core CPUs with 8GB+ of RAM and huge, fast storage drives.

Also of note is that I basically have fumbled my way through the SQL portion of this guide – it works, but it’s not my area of expertise. If you’re going use this guide to build a server that you plan on hosting to the public, it’s important to understand that, as with any public facing networked computer, you need to pay close attention to the configuration and security of your server. While this guide gets you a functioning SWGEmu server, it does that and ONLY that. The rest is up to you! 🙂


Update: Bad News for fellow AMD FX CPU Owners

So after playing with this setup, I discovered that compiling Core3 took literally twice as long as it used to! With the Legend of Hondo VM, based on the 2016 version of Core3 and running in a Debian 8 VM running under Windows 7 64 bit, the compile time was 492 seconds using 6 cores (as seen in this post). Today the compilation too a whopping 1140 seconds in my Devuan 2.0 guest, on a Windows 10 64bit host! WTF, eh?

Attempting to mitigate the issue, I installed the backported version of kernel 4.19, upgraded VirtualBox to 5.2.26, disabled the Spectre mitigation in Windows 10 (Meltdown is N/A for this CPU, according to Inspectre.exe, which I believe means the patch isn’t running in Windows), and added “nopti noibrs” to the kernel parameters in grub on the VM, but nothing helped.

What a bummer – compiling software with GCC was the one thing this o’l FX-8320 was great at!

For comparison, I recompiled Legend of Hondo in its Debian 8 VM on this Windows 10 host and it only took 474 seconds. That’s 2.4 times faster!

For further comparison, I compiled Core3 in a current version of the ZonamaDev environment (Debian 9 with kernel 4.9) and it also took way too long, coming in at 1061 seconds.

Well, it’s clearly not a problem with the Windows 10 host or VirtualBox. The problem is either the new version of Core3 or the new version Devuan/Debian/Linux.


Bonus: How to use Linux Kernel 4.19 in Devuan 2.0

This is something I had to do on my computer when I installed Devuan 2.0 directly, as version 4 kernels before 4.12 don’t work very well with my AMD R9 270 video card. It’s not a hard process, but it can be a bit confusing if you’ve never done it before.

1. Add the backports repo to the sources list
– Backports are software that is newer than versions that normally are available with a version of Debian/Devuan. In this case we’re using a newer version of the linux kernel itself.
– Open a terminal and type
sudo echo “deb http://deb.devuan.org/merged ascii-backports main” >> /etc/apt/sources.list
sudo echo “deb-src http://deb.devuan.org/merged ascii-backports main” >> /etc/apt/sources.list

2. Update the system
– Open a terminal and type
sudo apt-get update
sudo apt-get -t ascii-backports upgrade

3. Search for available kernels
– Open a terminal and type
apt-cache search linux-image

– This will return a list of kernel images that are available. They have specific names. At this time, we’re looking for linux-image-4.19.0-0.bpo.2-amd64, but some of the numbers might be higher by the time you read this, so change them as you need.

4. Install the kernel and kernel headers
– Open a terminal and type
sudo apt-get install linux-image-4.19.0-0.bpo.2-amd64 linux-headers-4.19.0-0.bpo.2-amd64

5. Reboot to start using the new kernel
– The system will automatically boot using the newest kernel.

Semi-Nerdly YouTube Deleted

Just thought I would post here to say that, yes, I did remove all my videos. Sorry about all the broken links, etc. Life goes on.

Why did I delete my YouTube account?

1. Google bothers me.
I swear, the only reason Google has not failed as a company is because they make so much money selling ads that they’re simply able to buy their way out of their mediocrity and regularly unhinged malarkey. From the, “change for the sake of change” that continues to make their services worse (Gmail in particular), to how they can’t even be arsed to properly curate YouTube Kids (despite being an extraordinary wealthy company), Google disappoints me over, and over, and over again. Top it all off with how gross and slimy they are when it comes to privacy, they’re just not a company I wish to support. Sadly, I have practically everything tied to my Google account, so it may well be impossible for me to De-Google entirely at this point…

2. I really don’t like making videos anyway.
Meh, there are just so many other things I would like to do with my time. Couple that with the fact that no one cares anyway and, well, why bother? It’s not like I was posting useful tutorials or whatnot and there’s plenty of content on every topic imaginable anyway. The world does not need me to make videos! 🙂

3. YouTube kinda sucks now, eh?
Seriously, it’s so full of complete and utter bullshit that there’s really only a tiny microcosm of useful or relevant content now. Also, it’s neigh unwatchable without using ad blocking software of some type too; I understand that bandwidth/hosting is expensive and that content creators deserve to be paid, but it’s really gone too far. The same can be said about our the satellite TV, where broadcasters have stooped so low as to put banner ads over the show. Truly, the current incarnation of the advertisement industry is a blight upon humanity… I digress. YouTube, it jumped the shark several years ago.

Anyway, I thought I would post this here so that it was visible on the side bar. Have fun!

Semi-Nerdly is Moving to GitHub Pages

Semi-Nerdly: Now at https://tatwi.github.io/semi-nerdly/

For me, this move makes sense for a lot of reasons. The big one being that the workflow and tools I use for creating web pages on GitHub Pages is exactly the same as how I have documented my GitHub projects since 2014. That being, essentially,

1. Open the Geany editor.
2. Write some stuff, using Markdown for formatting.
3. Use Git on the command line to push the content to the GitHub repo.
4. Rejoice!

The only real issue is that GitHub limits repositories to 1GB of storage, which means I won’t be able to host many images in my tutorials/guides/etc. However, I will make up for that by sticking image galleries in my Google Drive if need be.Objectively, the most important things I write about here have to do with my projects on GitHub anyway and despite being pretty excellent at documenting my projects when compared to many open source creators, I do need to dedicate more time to documenting RocketTux, Rescue Girlies, and Legend of Hondo. Yes, I am sure some WordPress.com readers enjoy see pictures of me digging gross stuff out of old keyboards and how the keyboards look after I’ve cleaned them, but I am sure I’ll still feel strangely compelled to make posts like that on GitHub pages too.

Honestly folks, hardly anyone ever reads this site anyway, according to the stats on the WordPress.com dashboard. The most popular post, by far, has been my Verbose Guide to Creating a SWGEmu Server, which is sadly now quite outdated. I considered making an up to date version of that post, but really the ZonamaDev system is perfectly fine if you don’t mind using SystemD (bleh…) and I posted a copy of my Legend of Hondo virtual machine on my Google Drive, so there’s nothing really to setup to use it. Apart from that, the only other truly notable post I have made on WordPress.com was my rant about the French Canadian keyboard (ISO layout) which has been surprisingly popular. I have also noticed more online sales descriptions of laptops specifying the keyboard type, so who knows, maybe the post struck a chord with some folks of influence in the industry. Let me tell ya, using a keyboard that is different from what you were trained on is a serious impediment to productivity! I digress… 🙂 Anyway, as far as I can tell GitHub Pages doesn’t have any metrics, so that’s one less thing to ponder in the cricket chirping quiet of humid summer nights!

So here’s the plan:

I will keep this tatwi.wordpress.com blog alive and let it go back into ad-showing free-mode this summer, changing the main page to indicate that new activity is happening on GitHub pages. I’m really sorry about this and allow me to apologize in advance for the inappropriate ads that Google Analytics will inevitably display here (Ad-Block you say? Why yes, the Internet sure has become utterly insufferable without it, eh? Sigh…). After I have setup the main page and I am satisfied with the amount of content I have brought over to GitHub pages, I will redirect the semi-nerdly.ca domain name to the GitHub Pages site and I will keep paying for the domain name through one registrar or another.

Well, that’s it for now. I did make a post today over on the new site about Making a Button with GIMP if you’re interested in that sort of thing.

Take care!

WordPress.com Now 57% More Expensive!

Worpress.com Personal has skyrocketed in price from $35.88 to $48.00 plus an additional $15 for the domain name that is no longer included. So $63 annually for what was $35.88 just a couple months ago. All prices in Canadian dollars.

Yeah, I’m out. Too rich for my blood.

Allow me to also take this opportunity to complain about the forced change to the incredible pile of shit WordPress calls their Gutenberg Editor that is coming down the pipe from WordPress.com. That thing is an abomination, yet according to the replies I have received from the WordPress.com staff, it will indeed be forced upon all subscribers in the near future. Given that I do this whole website thing for the joy of doing so, it stands to reason that I shouldn’t completely hate the act of editing it. As such, I was already considering moving Semi-Nerdly.ca to another hosting. If you think I am over-reacting to this editor, by all means read the reviews for it. You will find that I am not alone!

Anyway, I’m going to pack it up and call it quits with this whole website thing. I can’t justify the expense and I can tell from the stats that very few people read the site anyway. My WordPress.com Personal subscription ends on June 23rd, 2019 and the domain name ends October 17th, 2019. I’ll delete the blog in June to prevent it from showing ads and I’ll redirect the domain name to my GitHub page until domain name expires. After that, my content will exist only on GitHub, Google Drive, and YouTube.

Ah well, one less thing to think about.

New Keycaps for My Keyboard

About a year ago I bought a Razer Blackwidow Ultimate 2016 from BestBuy to replace my Microsoft Comfort Curve 2000 keyboard that I had used for the better part of a decade. It took me a while to get used to it and I darn near returned it, because of the growing pains I was feeling due to the difference in key spacing between the two keyboards, but eventually I ended up liking the Blackwidow Ultimate. However, as with anything there were a few things about it that bothered me.

Most importantly, I knew that eventually the rubber paint would wear off the stock keycaps, just like they did for this person, leaving me with a mess long before the key switches themselves gave up the gusto. Then there were the secondary legends on the keys that were not backlit, which made them hard to read. And finally, with the other two cool looking Commodore keyboards I have at my desk (a VIC20 with PET keycaps and a C64c with white keycaps), my Razer looked boring and uninspired in plain black. I wanted something for my main PC that looked as interesting as those old machines, but I didn’t want to go crazy and spend hundreds of dollars on a custom mechanical keyboard, so I did the next best thing: I bought some aftermarket double shot PBT keycaps for my existing keyboard.

My Choice
There were several options and I came close to getting the all grey version, but in the end I went with the white/green combination, because it matches the green backlight of the keyboard and it’s semi-retro looking. Grey and green would have been ideal, but the white is nice too. I would have preferred spherical (SA) key tops, but I wasn’t able to find a set that has the correct sized keys for this model of keyboard. Too bad, because that shape is really what makes keycaps look retro and feel awesome, but these are nice too.

Packaging / Purchasing
This was my first time buying anything on Ali Express and it proved to be painless and simple. Shipping to Canada was waaaay faster than I had imagined it would be; I ordered on Nov 8th and the package arrived in Canada on Nov 15th. Unfortunately it took Canada Post two weeks to move the package from BC to my PO Box in Ontario. The packaging is excellent: A simple card board box with two layers of plastic sheets full of sockets for each keycap, plus lids for each of the sheets. This is enough to protect against normal shipping abuse and it was also a handy place to store my original keycaps.

Build Quality
When compared to the Commodore 64C and the PET keycaps on my VIC20, these new PBT keycaps are kind of crap. That’s just how good they used to make keycaps! However, when compared to the stock Razer keycaps, these thicker, more durable plastic PBT keycaps make the ones provided by Razer feel like cheap junk. That said, they must not be tested for consistency when transmitting light through the legends, as some can only be described as unacceptable. Flat out “bad” in the case of the Print Screen button, though I suppose it doesn’t help that the LED is at the top of the switch and the light needs to travel through the translucent key post to reach the bottom row of letters on the key. Overall, they are very good for the price (I paid $29 CAD).

Pros
– Clean, clear traditional font and legends on the letter keys. The secondary characters are backlit, unlike the original Razer keycaps.
– Matte finish and texture looks and feels nice (especially compared to the slimy texture of the stock Razer keycaps).
– Looks fantastic!
– Doubleshot legends made from PBT plastic mean that the legends will not wear off. This is a big plus, given that the paint wears off the stock caps, leaving blobs of color where the legends used to be.

Cons
– Thicker plastic catches on the front of the metal stablizer of the backspace key, making it bind/jam and not trigger a key press. Update: I fixed this by using a sharp carpet knife to shave a very small amount of plastic off the inside-front of the key (hold the blade perpendicular to the surface and scrape back and forth gently).
– Legend on some keys do not shine through properply, most notably on the green keys (CapsLock, Shift, Enter, Windows Right Click, Alt, B, F6, F8, Prnt Sc, Scr Lk, Pau BK, Num Lk, Numpad /, Numpad *, Numpad -).
– No Media Key legends (this is a key set that is specific to the Razer keyboards, so it would have been nice if they were there).
– Second Windows key rather than a FN key.
– Macro keys have a smiley face *-* legend. Not an issue for me, as my Blackwidow doesn’t have them, but I’d venture a guess that many folks would prefer a blank cap or an M1, M2, etc legend.

Rubber O-Rings
– They successfully remove the “clack” sound of the keycap hitting the the switch when “bottoming out” the key.
– Easy, yet time consuming to install.
– Does not appear to effect the back lighting.
– Kit was good for $11 CAD, but the packaging seems a little overboard/wasteful.

Unboxing and Typing Comparison Video

Wave form comparison between the original keycaps without o-rings and the new keycaps with o-rings.

Picture Slideshow Video

Upgrade Process
All together, it took me about three hours to complete the process (breaks and documentation included). I used the wire style keycap puller that came with the keycaps to remove the caps, rather than the circle style puller that came with the o-rings, because it was a bit easier to put around the keys and it felt more stable. The most difficult part of the process was putting the stabilized keys back on the board, especially the plus sign on the numpad – that bugger just did NOT want to fit on the switch stem! The other difficult aspect of the stabilized keys came from having to remove and re-seat the two guide do-dads on each keycap.

The black part in the middle and on the top left, along with the wire are used to stabilize the longer keys.

To get those pieces out, I slowly and carefully slid a thin flat head screw driver between the top of the key post and the bottom of the black piece and turned the screw driver slowly. This popped the part loose enough to pull it out by putting my finger nails under the circular bottom plate of the black do-dad. I had to remove the glue residue (with my finger nails) from the black do-dads before they would fit into the key posts of the new keycaps, but they popped in with a bit of force placed on both sides of the round plate using my thumb nails. Tricky and slow…

Apart from the stabilized keys, cleaning out a Sasquatch worth of hair and putting 105 o-rings on key posts was the majority of the time spent doing “actual work”. Take a look at this,

Hair… so that’s where it went!

I tell ya, it makes me wonder if balding middle aged men should come with a hairnet as a matter of public safety lol… Seriously, that’s a lot of hair and misc gross for only a year of service on my desk. Ah well, it brushed out well enough using a 4″ paint brush and the tiny brush that was included with the o-rings.

While I was under the keycaps, I noticed that my T key had some white junk on it in such a way that it could only have come like that from the factory. Sure enough, when I paid attention to the way that key feels and sounds when being pressed, its “clicker” is indeed not functioning properly. It still clicks a bit, but it feels more like a linear switch than a clicky switch. I’m thinking that this board must have been a factory refurb, even though BestBuy sold it as new stock (which may explain why it has real Cherry MX Blue switches rather than the Razer Green switches found in other 2016 models of this keyboard). Ah well, it works and if ends up bothering me too much I can take the keyboard apart and replace the switch.

Pardon the hairs… The obviously “repaired” switch for my T key.

Final Words
I’m still getting used to the new feeling of the keys. They feel pretty weird with the o-rings after a year of using them without and I am not 100% sure I like it. I can feel myself bottoming out harder than I need to, especially now that the travel distance is shorter. Hopefully I will get used to pressing the keys down only to the actuation point, rather than all the way down – something I definitely did not master after moving from the rubber dome Comfort Curve to this mechanical Blackwidow Ultimate. All in good time, I guess! One thing that I really like about these new keycaps is how their texture makes the keys feel slightly on the rough side of normal, which feels neat (and matches the texture of the chassis). Overall, I think I made a good choice. Here’s hoping the whole unit lasts a long time!

Yes, I did put the O and the P in the wrong order at first. Hey man, I was just going row by row based on what was in the package (see the slideshow video for proof!) Someone in China messed that one up for me! 🙂

RocketTux: Download and Play Like a Normal Program!

Yup, you no longer need a master’s degree in Compu Fu to play the game! How about that, eh? 🙂

Thanks to the mighty kind folks who created Node JS and NW.js, I was able to package the open source Chromium web browser along with the game, allowing it function like any other Windows or Linux program. Simply download the zip file, extract it, and run the game from its folder!

20MB of game data, 185MB of web browser based “game engine”…

It’s important to note that I am still very much developing the game, so I have yet to implement all of the features and functionality. That said, I have completed the collecting of coins and items, and all the level themes are unlocked for testing, so there is fun to be had. There’s a video at the bottom of this post where I demonstrate playing this part of the game. If you have a GitHub account, feel free to post any issues you find with the game, otherwise you can share your feedback in an email.

Download and Play
Windows 7/8/10: 64 Bit, 32 Bit
Linux: 64 Bit, 32 Bit
Previous Releases

Installation & Requirements
Download the file for your operating system, extract it, open the created folder, and run RocketTux.exe or RocketTux, as you would any other Windows or Linux program. The game should play well on any recent PC/laptop/Chromebook that has hardware accelerated graphics, 2GB RAM, and a dual core CPU. To give you an idea, it’s a little slow my old Core2 Q8200 quad core desktop that has 8GB of DDR2 RAM and a 1GB Nvidia Geforce 450 graphics card, yet it plays great on my Intel based Chromebooks. See this document for help with running RocketTux on a Chromebook.


Currently I am working on completing all of the level sections for bump up to version 0.5.0, as I just recently completed the sprite sheet (save for room I left for minor details I may find I want later. I can be so OCD…). These are actually really fun and easy to create using the Tiled editor, so time and inspiration are all that are holding up release 0.5.0!

I will create a new download zip file for each major “point release”, while the master branch of the GitHub repository will remain in step with my development. You should be able to clone the repo and build an up to date release at any time, as I intentionally won’t push commit changes that break the game. Along those lines, there won’t be any further changes to the file structure of the game, apart from adding new music and possibly new/different sound effects, so it should continue to “just work” for all of us. Yay! 🙂

Enjoy!

Recent Video:

Older Video:

Yay, Windows 10 doesn’t suck anymore!

“There’s always something that pisses me off!”, was the most common thing I would say about GNU/Linux in the decade between 1998 and 2008. So in that time I used Windows 98, 2000, XP, and 7 as my primary operating systems, because to be honest, they “just worked”. I appreciate that about Windows, I truly do.

Windows 7 was fantastic, from beta all the way up until I finally deleted it the other day. It’s not that I resisted Windows 10 up until now, it’s that each time I put it onto my computer it presented deal breaking issues that made it annoying and problematic to use. Given that 7 still worked great, why then would I put up with the problems in 10?

I can’t remember now if it was 2016 or 2017 when I threw in the towel and went back to using Win7 instead of Win10 (for the few things I still did in Windows, which was primarily playing Windows games and developing game mods). But, it was earlier this year that I decided to give it a whirl again and, thankfully, a lot has changed for the better. Enough so that I’ve decided to flip back to using Windows as my primary operating system!

My time with Devuan (Debian 9 minus system d) was short, while my years with Linux Mint 17 were long and glorious. To make a long story short, everything other than DirectX games worked flawlessly for me in Mint 17 for years. It made my computer seem like a super computer and the only time it gave me trouble was when I deleted some package that almost everything else depended on (which was easy enough to fix with apt-get). Unfortunately my experience with Devuan was different. I encountered two deal breaking issues and several significant annoyances. The big issues were:

1. The mouse would randomly immediately left click after right clicking on items in Thunar, Filezilla, and other programs that make up the bulk of the user experience. This would cause random right click menu actions to fire – one of those actions is “delete forever”. Others have reported the issue as well and unfortunately none of us were able to solve it. This is a deal breaker, because I can’t live with being a right click away from accidentally deleting something important. Also, it was annoying as hell!

2. The video drivers still aren’t as good for my card as the now unsupported Catalyst drivers. I was happy to see that AMD was kind enough to finally add proprietary support again for my R9 270, but the truth is, it sucks. Some applications require disabling compositing in Xfce to avoid horrible screen tearing (to then only have somewhat annoying screen tearing), while others need it to be enabled to mostly fix screen tearing. Meanwhile in Mint 17 with the Catalyst drivers, all I needed to do to enjoy a perfect experience was open Catalyst Control Center and put a frickin check in the box beside “Tear Free Experience”…

Always something!

Look, I love the spirit of open source and I will forever be thankful to those who generously give their time to creating and maintaining open source projects, but the bottom line when it comes to my daily computing experience is that I’m going to use what doesn’t annoy me. And you know what, that’s fine.

As with anything, Windows 10 has its problems. For example, I still can’t use the audio inputs on my TV tuner card to record with Audacity in Windows, while they work just peachy keen in Linux. Kudos to open source driver developers! That particular issue I decided to resolve by keeping a dual boot of Mint 17.3 explicitly to use for those rare times I want to record something with my microphone. That said, the biggest issue I previously had with Win10 has thankfully been resolved – they finally allow people to disable their Bit Torrent uploading of Windows Update data, an anti-feature of Windows which would kill our “Wireless 5G” internet dead.

Previously Microsoft offered little to no control over the update features in Windows 10. This, combined with the laws of physics and our ISP’s throttling of Bit Torrent traffic, would cause our internet connection to become literally unusable while my computer was on. Not poor or even bad, but “I can’t even ping the DNS anymore” unusable. After a while I found some ways to mitigate the issue, but it wasn’t until one of the most recent patches where Microsoft finally allowed us to actually turn it the hell off. I can unequivocally state that before when their UI said it was off, it most certainly was still on, sucking back our (slow, data capped, and expensive) “rural broadband” internet like a kid who’s about to experience brain freeze for the first time as he sucks back a Slurpee on a sweltering summer’s day. Anyway, THAT (obviously) was a deal breaker for my use of Windows 10 in the past, so thank digital jebus it’s been fixed.

Why should I be thankful? Why couldn’t I just keep using Linux Mint 17 and Windows 7 forever? Why do I even need to think about other operating systems anyway? Because “computer security”, that’s why.

That’s right, possibly the biggest “non-subject” of them all is the very thing that dictates the context of my everyday computing experience itself. I loathe “computer security”, because not only is uninteresting, but the entire reason it exists is simply because some people can’t help but be assholes. All software is the fruit of the “completely arbitrary imagination tree” that humans planted years ago when they invented computer science. As such, it’s inherently flawed, so of course people will find problems with it. Sadly what that means in practical terms is, assholes will steal your credit card numbers and bork your life without a care in the world, so you can either keep your computer systems up to date or you can not connect those computer systems to the internet. Yay, how positively fantastic! 😐

Anyway, after considering the ways in which I have used my desktop over the years and the pros and cons of using a dual boot system, I determined that it was…

A. Mentally exhausting to run a dual boot system where I was doing more than just playing games in Windows (I did all my development of Legend of Hondo in a Linux VM and Windows-only tools in Windows 7).

B. Honestly, all the software I actually use in Linux runs just fine in Windows anyway. With the exception of that blasted TV tuner card! Lol…

Is Windows 10 perfect now? No, but is a lot better than it once was and being completely frank, it does “just work” where several “modern Linux distros” have failed me; various “little things”, like working perfectly when transferring files from my Galaxy S8 (as apposed to taking forever while also having to disable thumbnails for pictures and video in Linux MPT connections) and the simplicity of having all my files and programs immediately accessable.

Firing up a purpose built Linux virtual machine in VirtualBox from my Windows desktop gives me the best of both worlds. I can work on mods for a Star Wars Galaxies or World of Warcraft personal server while also running the client, a web browser, and listening to music, all at full speed and full functionality, with no pains in my ass at all. What’s not to like about that?

I’m sure the many “FOSS” purist of the Internet would be happy to troll me for using Windows at all, let alone for not using GNU/Linux or FreeBSD as my main operating system, but man people like them are nutcases! Seriously, some folks take things way too personally and a little too far… Me? I’m going carry on with my efforts to use open source software to create fun open source stuff too, because that’s what makes me happy. I’ll just be doing it from Windows 10, except when I need to use that microphone… 🙂