Install ScummVM From Daily Build in Ubuntu

A friend of mine asked me how to install ScummVM from a daily build. Since I myself had not done this before, I thought I would write a little tutorial. For those who do not know (and who do not necessarily want to click the link above), ScummVM is “an implementation of LucasArts SCUMM interpreter”.

Requirements

First, we must clear any requirements that ScummVM needs in order to build. Luckily, there are only a few required dependencies: SDL 1.2.x and build-essential which are both in the Ubuntu repositories. The rest of the optional requirements are (as of Ubuntu 10.04) already installed. These are:

  • flac: required to play compressed games without quality loss
  • libmad: libmad is for playing mp3-compressed games
  • libogg and libvorbis: to play OGG-Vorbis-compressed games
  • libmpeg2: some games use re-recoded cutscenes

One thing I always do when setting up my environment to build an application is make sure that the dependencies are installed, whether or not I think they are:

$ sudo apt-get install build-essential libsdl1.2-dev libsdl1.2debian flac libmad0 libogg0 libvorbis0a libmpeg2-4

The line above will install the required dependency as well as the optional dependencies if they are not available. If you do not want to install one of the optional dependencies, do not add its name into the list.

Source Files

We are now ready to grab the latest sources for ScummVM. They are available from this website. Download the newest source, which generally shows up first on the list. Make sure you download from the “Source” column. For this tutorial, I decided to move the downloaded file from my Downloads to ~/Desktop/tmp/

After this is downloaded, extract it to an empty folder. When the extraction is complete, you should have a scummvm folder with its contents. To extract via the Terminal (file name will be different for you):

$ bunzip2 scummvm-20100727.bz2
$ tar -xvf scummvm-20100727.tar
$ cd scummvm

You will notice that the above shows us changing the directory (cd) to the newly unarchived folder. From here we will want to make sure that our machine has everything needed for building. We do this by running the configure file. If this completes successfully, we will then run make to compile, and make install to install the application on our system.

(If you do not want to install this, you can still run it from this folder with ./scummvm. You won’t need to do the “&& make install”)

$ ./configure
$ sudo make && make install

After this is complete, you should be able to now run scummvm. If you run into any problems, please let me know and I will do what I can to help you.

Installing 32-bit Arch Linux Inside 64-bit

Arch Linux is a great Linux distribution for those who wish to install a minimal setup and configure their system just the way they want. Coming from a Debian-based distribution (Ubuntu), I have learned that installing 32-bit applications is not as easy as downloading the ia32-lib package.

The first time I downloaded 32-bit libraries inside Arch Linux, I figured out that they can overwrite or modify existing files. After refreshing my install, I set about for a better way to run 32-bit programs. What I found was a wiki entry inside the ArchWiki. After going through the steps a few times, I decided to create a script that would automate the steps to make installing it again less cumbersome.

Since the process can be a bit intimidating for people less acquainted with Linux and the use of the terminal, I have made my script available for download. Let me know how it works for you!

Binaries: Speed Bumps for Server Admins

Setting up an IRC server is pretty simple as long as you make sure to read the man pages and any other information given (especially the INSTALL file). Of course, that doesn’t really work all that well when you go about things the way I did initially.

Photo by Forest & Kim StarrI first started researching different IRC daemons to use in Ubuntu Server, and settled upon one. Finding that there was already a binary for it inside the Ubuntu repository, I decided to go that route. Quick and easy, yeah? IRC set up painlessly and after a quick configuring of the ircd.conf, I thought everything was dandy. I logged in and queried NickServ to register my nick, only to find there was no such nickname or channel. Looking this up, I realized I needed to set up some Services. I found the package I wanted to use and set about configuring it for use. I got it to set up and everything was a-okay, except for the fact that I could not get global operator working.

Now, the server is internal and does not need a global operator, so that wasn’t too big of a deal. Deciding to go with a passworded server instead of going through and configuring ChanServ to manage things, though, seemed to be a rather big deal. The binary I was using does not have ssl enabled, which means I have to compile everything from source.

This is the way I originally was going to do it until I let the temptation of using a binary overpower me. From this I have learned that if you are going to do something super specific with an application, do not install a binary. It is one of those common sense no-brainers which we are susceptible to once in a while, especially when we have become used to installing applications from binaries. All I can do is shake my head and laugh. After all, it is a learning experience isn’t it? It is just another one of those “trust your first instinct” things that I ignored.

So, if you are going to be installing applications to a workstation or server, make sure you that the binary will do everything you want it to, otherwise you are going to end up having to take several steps back, configure, and compile from source. What are your speed bumps?

Embed a Terminal Into Desktop

There are some neat things that I have been looking into for customizing my installation of Ubuntu 9.04, one of which is embedding a terminal into the desktop so that I don’t have to worry about closing it on accident (not to mention that it looks cool, too). Seeing as I have had to do this multiple times, I decided to write down the steps. While I know there are other tutorials, I spent too long looking for one that worked correctly (read: to my needs).

Software Required

  • Compiz must be running. You’ll also need CompizConfig, as detailed below.
  • Terminal (duh)

1. Getting Software

The first thing we will do is install CompizConfig. For this we will open up the Add/Remove application. For those new to Ubuntu, you click Applications, and select Add/Remove. After this opens, search for compiz and check Advanced Desktop Effects Settings (ccsm). Now search for irssi and check it. Click apply, and when the programs are finished installing, you can close the window.

2. Creating a Terminal Profile

For the embedding to work, we need to create a new profile for terminal. We need to do this because Compiz will change the behavior of the terminal depending on it’s title.

Open up a terminal (press Alt+F2 and type gnome-terminal). On the menu bar, select Edit, then Profiles. Click New and name it “deskie” (or whatever else you want to as long as it’s a unique name).

Under the General tab, uncheck “Show menubar by default”. Moving over to the Title tab, name it deskie (or what you named it before, if different) and set to “keep initial title”. Under the Colors tab, select White on Black, or whatever will suit your theme. Next we will move to Background. Set the Transparency to 0% or whatever fits your theme. Under the Scrolling tab, disable the scrollbar. After you’ve done what you want with this, close out of the profile editor.

3. Setting up CompizConfig

Now open CompizConfig (under System -> Preferences -> CompizConfig). The first thing we’ll do here is search for Window Decoration, and click on it. Under Decoration Window, we’ll replace “any” with “!title=deskie“, without the quotes. Now search for Window Rules. Enable it, then click on it. We’ll be adding “title=deskie” (without quotes) to:

  • Skip taskbar
  • Skip pager
  • Below
  • Sticky
  • Non resizable windows
  • Non minimizable windows
  • Non maximizable windows
  • Non closable windows

After these are filled in, go to the Size rules tab. Click New and add “title=deskie” and set the height and width you want the window to be. When you are satisfied, close CompizConfig.

4. The Aftermath

If you want to see what you’ve done, press Alt+F2 and type “gnome-terminal –window-with-profile=deskie” as the command and hit enter. You should now have a neat “embedded” terminal. To move it where you want, hold Alt, then click and drag.

If you want one to load on startup, go to System -> Preferences -> Startup Applications, and click Add. Name it “Embedded Terminal” and put “gnome-terminal –window-with-profile=deskie” as the command.

That should work, as it has for me. If you have any questions, comments, or concerns, feel free to let me know!

Skill Challenges of War: Shadowrun Style

After reading through all ten of The Core Mechanic’s “Skill Challenges of War”, I have come to the conclusion that converting them to Shadowrun is pretty moot (at least, in the case of the current gaming group). The way our GM is running our current campaign, we are already thrown into a war that is very much larger than ourselves. My reasoning as to why I’m not going to convert them: skill challenges are inherently built into Shadowrun. A lot of our “quests” are mission-based. Some of the things our ‘runners have done are very much like the listed possibilities within the Skill Challenges Concept, such as “capture something” or to “gather information on a diplomatic mission“.

To help explain, let me expand on the latter challenge. When the first piece of our Runner group came to the Sixth World from the Fourth World (more explanation later), we were immediately trained to be Runners by a corporation held by Knight. We were to go see the Elves, but on our way there the Elves captured us, thinking us prisoners of Knight’s. Through this, we ended up working for both sides for a time, with our main mission given by Knight to give them information about certain Elves.

We were working both sides, and in one instance, Azitade contacted Mr. Johnson of Knight to arrange a dummy server with dummy information, with short notice. He arranged this, and some of our group, including our Troll decker Exodus, did not know about the set up. Neither did Knight’s headquarters that we were to break into.

Exodus, Drek, and Elk Foot made it to the floor we were supposed to. We watched over Exodus while he pilfered the information off Knight’s matrix. When he was done, he decided to plant explosives that he had with him around the terminal. (The troll likes to blow things up.) Before we blew it up, alarms sounded and we were greeted at ground level by some twenty or so guards. Using our combined abilities (and Drek’s seeming magnetism to bullets), we managed to escape. Luckily, Mr. Johnson also arranged for the patrol of the headquarters to be new recruits who thought this was a training exercise… until we totaled a few of them.

We gave the “stolen” data to the Elves, and continued working for them as well as Knight.

The way Shadowrun works, there was no reason for me to implement a conversion of the skill challenges. Everything from street thugging to corporate espionage, is an integral part of the game. Skill challenges of DnD are a commonplace among Shadowrunning. Things like taking out important people and flushing out spies are a day-to-day event for any good ‘runner group. Sure, you have plenty of shooting and hack’n'slash, but there is a much larger emphasis on stealth and hacking the matrix (by the way, this use of matrix predates the movies). There are sessions spent with characters solely gathering information, which Shadowrun (as well as a good group/GM) make fun.

Oh, to explain the Fourth and Sixth world references, Shadowrun’s timeline is based on events of the Mayan calendar. The Sixth World is said to start in 2011/2012 (the end of the known world and all that). We are presently on the “closing” of the Fifth World. It is only fitting to assume that DnD/fantasy is in the Fourth World.

Skill Challanges of War

Over at The Core Mechanic, there is an interesting series about a way to incorporate war into a campaign (in this case, it’s Dungeons and Dragons 4th Edition) using skill challenges. I find this rather fascinating, as it adds a cool element to the roleplaying atmosphere. As of this writing, there are four parts.

This has got me thinking about a campaign that I want to run, and seeing how well it would translate into other tabletop games, such as a modified Shadowrun 3rd Edition (there are a few rules we don’t like, but we’ll not cover that here). There are so many possibilities. Being that it is centered around skill challenges, it would work perfectly into Shadowrun, and I imagine possibly even White Wolf games (though I have only played them once, a long time ago, so I really have no bearing on that).

When I have some progress, I’ll post about doing it the Shadowrun way.

Life in Ubuntu-land

Since my laptop has died, I have been using the desktop that Samantha and I had been using as a multimedia server in our room. Over the course of several days, I have changed it into something that is a bit more functional for working. As such, it has also been moved out into the living room.

I am very glad that I am able to do everything I need to on this desktop without having to be chained to Microsoft and their operating system. In fact, I’ve even been able to get more done – Linux just feels better and does not interrupt my work flow.

Web Weaving: Flat File Database vs. SQL

Continuing my research on different styles of databases that I could possibly use for web developing, I have found something interesting about flat file databases. I have always heard mixed things about them, which I can usually lump into two categories: “It’s faster than SQL” and It’s slower than SQL”. The funny thing about this is the fact that both categories aren’t necessarily wrong, until someone decides to use a word like “always” when describing how a flat file database is better or worse.

Both styles of databases have their pros and cons, and what you are doing should help dictate what sort of database you are going to use (not just what you want, but what is the best/most functional). There are a few things that should be looked into before you decide on what database structure you’re going to go with. Is the data static (hardly ever changed or added to) or is it dynamic (always changing)? Is the website that is using this database going to grow and evolve, or is it a “one time” deal?

Is the data static or dynamic? Flat file databases work very well with data that is meant to be stored and not altered very much, if at all. All you have to do is read the file and pull the data that you want, right? Generally speaking, yes. More specifically, you are going to have to find or make a structure/system for declaring how you data is going to be stored (for example, CSV or by line? The great thing about using a SQL database is that the main architecture is already there – all you need to do is define what the columns and rows will hold, and then create the code (in my case, php) to insert/edit/update/remove the data from the rows/cells.

Is the website going to evolve? For many websites, it is natural progression to add more pages and features to it, either to make it more user friendly or to accomodate other forms of data. Flat file databases can be a headache when it comes to large quantities of data (not to mention that you’ll see a performance degredation due to having to read a file [files can only be read from top to bottom]). SQL can link similar tables/rows together by using “joins”, whereas you may need several flat file databases to be accessed and then the data strung together via php, asp, or whatever else you’re using. SQL allows for a more convenient and modular design of your website. SQL is great for allowing greater scalability as more complex data is needing storage.

It is easier to change the code behind a SQL based site than it is to rewrite all of your parsing code when you allow for more complex data. So, unless you are using largely static data storage, SQL is a good choice for storing data.

Web Weaving: Transactional Storage Engines

After some talk with the developers of AIR, I did some of my own research into the difference between the MyISAM and InnoDB transactional storage engines found in MySQL, and found some interesting things. Contrary to my first belief, MyISAM under-performs when it comes to large-scale, simultaneous transactions (you really start seeing performance issues at around 1000 simultaneous transactions).

At first, all of the results I had were pointing to MyISAM being better, but after making InnoDB’s buffer pool larger and setting autocommit to 0 (meaning that it won’t auto commit any transactions), the results still weren’t looking too good, other than the CPU consumption was considerably lower (10-15%).

One thing I really liked was the fact that it uses row locking instead of table locking, which means that simultaneous reads and writes can be done without having to wait for the table to be unlocked. MyISAM is good for small scale websites, as InnoDB performs slower if there are fewer than 100 or so simultaneous connections and if the data is small (below ~10MB per transaction).

For now I think I will stick to MyISAM for my everyday coding, but I already know a few sites that could benefit from an engine switch…

Robotic Anarchy: Wingzar!

Wingzar! is a “robotic solo project”, from where I cannot find the origins of. They have released their first EP, “What We Lack In Subtlety We Compensate For In Number Crunching” for free online from pages such as Tangled Wilderness.

Wingzar! can be considered very industrial and/or steampunk in sound. The lyrics are on the simple side, but are put to use effectively to enhance the atmosphere of the music. They have an ethereal and synthetic feel to them, which meshes with the music well. The topic of the lyrics are primarily anti-human (“kill them / kill them all”, del *.human) and of how humans oppress both nature and technology.

Taken at face-value, these lyrics seem kind of absurd. Why would anyone want to be anti-human? But I think that these are not meant to be face-value lyrics like a lot of modern bands churn out these days. Instead, you must look at them from the perspective of a robot. We are in process of making them in our image, and we have a ton of stories of robots being built to mimic us. What if they had an underground resistance? These would be the words of robotic anarchists, I believe.

It is a really neat idea, one of which I’ve thought about while pondering the life of 6067, the Technophobic Android [MySpace link alert]. Seeing as ‘he’ comes from a dystopic future where robots are highly advanced, this could quite possibly be something feasable. Mmm. Brain food.