A little while ago Chris Gransden mentioned on the RISC OS Open forums that a test version of the DarkPlaces Quake engine for RISC OS on the Raspberry Pi was available for download.
The game uses the Khronos module to take advantage of DarkPlaces’ hardware acceleration, something I haven’t really seen in RISC OS before. So six months late to the party, I thought I’d take it for a whirl and see what it could do on my little Pi 3.
What is DarkPlaces Quake?
DarkPlaces is a Quake modification that uses its own custom OpenGL-only engine and features improved graphics and image quality when compared to the original Quake – which saw its engine released under the open-source GPL license a few years ago.
Taken from DarkPlaces’ website, developer LordHavoc says he wasn’t happy with the custom modifications and engines available after the Quake engine was initially open-sourced, and he decided to create his own project with a focus on improving the quality of effects and image quality.
“DarkPlaces engine was started because I was unsatisfied with the other engines available soon after the Quake source release (which did little more than add some flashy effects), and craved modding features for my DarkPlaces mod, and wanted some real enhancements to the online gaming experience as well.” Said Lord Havoc on the DarkPlaces website.
Some features specific to DarkPlaces Quake include:
- Fully integrated per pixel lighting and shadowing technology, lightmapping and deluxe mapping as well as a variety of material effects fully integrated into one shader system that deals with all situations
- Support for a variety of file formats (Quake1 and Quake3 file formats, skeletal models, various image formats, ogg vorbis etc.)
- Game logic scripting in QuakeC programming languageAdvanced networking support
- Realistic global fog feature with height limit for seamless blending with sky.
- ODE physics engine integration
- Per-polygon collision detection optimized for large static meshes, as well as Quake brush technology.
- Background music support with sequential and random playlists and playlist switching (
- CD audio support
Setting it up
DarkPlaces for RISC OS can be downloaded here. You’ll need to source your own PAK files, which contain the levels for the game. The freely available shareware file is available for download from here, if you have a full copy of Quake then you can extract the PAK files and use them with DarkPlaces.
Once you’ve extracted !DarkPlaces from the zip file and into a location on your hard drive, you’ll to need to create a ‘id1’ folder in the !DarkPlaces folder and drop a PAK file into it.
The game uses hardware accelerated graphics so you’ll need Khronos for it to run. Just merge the !Boot and !System folders with your current ones, it’ll then add the Khronos module and necessary shared libraries to your system.
DarkPlaces Quake is currently only compatible with the Raspberry Pi due to it using the GPU for hardware acceleration. It will however run on all versions of the Pi including the Pi 3 and Zero.
Gameplay and performance
Running on the Raspberry Pi 3, I found DarkPlaces to run reasonably smoothly using a 1920×1080 resolution. Occasionally there is some flickering on the screen, this is down to VSync not working but it doesn’t hinder gameplay for the most part. The game is test quality as it stands so encountering issues like this is to be expected.
The FPS rate when playing averaged about 50fps which if you look at the hardware its running on and the massive improvement in graphics and effects quality when compared to the original Quake, it’s pretty impressive.
Chris has also tested DarkPlaces on a Raspberry Pi Zero running RISC OS, the performance wasn’t quite up-to-par with the Pi 3 obviously, but it was running at 20fps at 1920×1080 which is not bad.
Another issue that can be annoying is if you press multiple keys together at the same time, the game will completely ignore the presses all together. Also, the Escape key will exit the game without warning – so be warned!
Overall, Chris’ port of DarkPlaces is a very impressive demonstration of the hardware accelerated graphics capabilities that the Khronos module can be provided on RISC OS. If you fancy having a play and don’t mind the little quirks that this test version of the game has, then go give it a shot – you can grab it from here.
The 2017 RISC OS South West Show takes place on Saturday, February 25th and it’s set to be another big show, with lots of exhibitors confirmed and hopefully a few interesting launches – developers tend to time new releases or major updates to coincide with the show so hopefully something juicy comes up.
The show will run from 10.30am to 5pm, with tickets being £5 at the door.
RISC OS Open will be showing off their recent developments at the show, including selling their usual range of goodies like media stick/cards with RISC OS on it as well as their RISC OS documentation range.
R-Comp will be in attendance with their usual range of computers and software. Andrew and Co. will undoubtedly be showing off their ARMX6 computers running on 4K displays as well as demonstrating their massive range of software and hardware.
CJE Micro’s will be flogging their usual wide range of wares – including their Raspberry Pi based laptop, the PiTop RO.
RISC OS is known for its unique graphical interface, so running it on a headless computer or server is not something that is generally associated with the operating system. It is however a very sensible option if you need a machine to run automated tasks such as running a web server or file server.
If you’re running a headless machine, then you will need to occasionally administer it. Admittedly, you’ll need to undertake maintenance on RISC OS far less regularly than a Unix-based/like or Windows system, mainly down to the lack of known security vulnerabilities, but from time-to-time you will need to log into the machine to amend a few things.
So apart from manually connecting a mouse, keyboard and monitor to the machine, there’s a few options out there. You can setup an SSH server and connect it to it remotely, performing tasks through the RISC OS port of Bash (which is not always 100% reliable due to the complex and in-depth nature of Bash) – or you can setup a VNC server and remotely access your RISC OS desktop interface from another machine.
What is VNC?
Virtual Network Computing (VNC) is a graphical desktop sharing system that used the Remote Frame Buffer (RFB) protocol. It can grant access to another system running a VNC client – which will be able to see the machine’s desktop screen and remotely control it using a keyboard and mouse.
There are VNC clients and servers available for a wide range of operating systems, Unix-based/like, Windows etc.
Setting up a VNC server on RISC OS
Originally developed by Hernik Bjerregaard Pedersen, VNCServ is a VNC server application for RISC OS that has had several maintainers over the years – Crispian Daniels, David Llywelyn-Jones and more recently Jeffrey Lee. VNCServ receives regular updates and is compatible with the latest version of RISC OS including ARMv7 machines such as the Raspberry Pi. The latest version at the time of writing is 0.17 (04/02/2017).
The installation process is as easy as you think, download the Zip file and unarchive it using SparkPlug or a similar application, drag and drop the !VNCServ application into whatever location on your storage drive you want to keep it.
You’ll most likely want to ensure that VNCServ automatically runs whenever the machine boots into RISC OS just in case of any unexpected reboots. Editing the ‘PreDesk’ configuration file located here will provide this functionality – !Boot.Choices.Boot.PreDesk
When run, VNCServ will tick away in the background and respond to any VNC requests it receives over the port you’ve specified for it to run on.
VNCServ doesn’t come with its own graphical interface, but it can be configured via a very handy front-end written by Steve Potts.
If you’d rather stay away from the front-end, you can configure access by moidfying the obey file named ‘start’ to use the port number and password you want to use. The password can be at most 8 characters in length.
The ‘start’ obey file can also allow you to set a suitable screen mode, and configure the behaviour of your mouse when controlling your VNC server remotely.
To start the server, double click on ‘start’ and the server will load and start listening for an incoming connection; the server hardly uses any CPU when no client is connected, so you can have the server running constantly.
Local network configuration
If you want to access your RISC OS machine via VNC from an external network (your work’s network for example) then you’ll need to enable the firewall your VNC server is passing through to allow connections on the port you’ve told VNCServ to run under – in most cases this is the default VNC port 5900. With most setups this can be achieved by adding a port forwarding rule in your router’s firewall to allow TCP&UDP connections over port 5900.
It’s important to keep in mind however that VNCServ only allows passwords up to 8 characters in length, meaning it will be reasonably straight-forward to crack the password and gain unauthorised access to your system via VNC. So if you don’t have a need to expose port 5900 (or whatever port VNCServ is running on) to the outside world, then don’t do it. Finding a list of public-facing VNC servers is trivial using websites such as Shodan – a search engine for Internet-facing devices.
Should you decide you don’t require access to your VNC server from an external network – for example, you only need to connect to it from devices in your home, or you use a VPN connection to remotely access your network remotely – then you don’t need to do anything, traffic should pass over port 5900 without a problem unless you have device-specific firewalls blocking this port (you’ll probably know about it if this is the case).
Accessing your VNC server
Once your VNC server is setup and running on RISC OS, you can remotely access it by pointing a VNC client to the IP address designated to your RISC OS machine running VNCServ.
If you’re looking for a VNC client, TightVNC is good for Windows and Linux computers, Chicken of the VNC is available for Mac OS. You can use Avalanche on RISC OS, the application is not regularly updated but it is very stable and shouldn’t cause you any problems, it’s also free! There’s also VNC clients for Android and iOS so that you can access your RISC OS desktop when you’re on the go!
LAN Access – If you’re accessing it from a device connected to the same local network as your server, then you can specify the LAN IP address for your device (e.g. 192.168.0.2) – it’s worth setting up a static LAN IP address in your router’s DHCP settings to ensure this stays the same and you don’t need to continually update your VNC client with the LAN IP of your server. If you will be accessing the server from your local network and from external connections, then following the steps in the ‘WAN Access’ section below will be your best bet.
WAN Access – If you’re going to be accessing your VNC server from machines outside your home network, then you’ll need to point your client to your WAN IP address, which will be assigned to your Broadband modem. You can find out your IP address by searching ‘My IP’ using most major search engines, click here for a pre-configured search query.
There we have it! You’re connected to your RISC OS desktop from a remote device. Happy dragging and dropping.