I have Khonkhortisan, a Champion gunner with a maskeraith. I also have Nasitrohknohk (spelled backwards), a Knight Elite bomber with a seraphynx.
I'm writing this because it seems like I'm the only one that plays this way and others may find it interesting, or more rewarding than alt-dragging. Also, it takes me a while to explain how I'm doing it, so I'm writing it all out.
Operating system/window manager: openSUSE Linux 12.3 (x86_64) / KDE 4.40.5
Screen resolution 1440x900, splitscreen window size 712x875
Two mice, two keyboards, Logitech Force 3D Pro joystick.
xinput version 1.6.0, 2.2 on X server
AMD Athlon(tm) II X2 240 Processor (two cpus)
2GB RAM (ouch, have to close other programs to play)
Nvidia GeForce GT 630 (also has 2GB memory)
First, the rules (I'm probably horribly misquoting like the rest of us):
I've heard you can have up to three free accounts online at the same time. I'm using up to two, and sometimes one.
You cannot broadcast a single key to two characters. This would be using software that helps you play, which is unfair. Doubling your damage (if they both happened to be aiming at something) for the same amount of effort (a single key click). The joystick is broadcasted this way, so only one character can have joystick controls assigned.
My personal preferences:
I frown upon alt-dragging (fighting with one, then having the others walk away from the start of the level to just collect loot), at least when there's only one alt involved. It's possible to control both at the same time, you're selling yourself short. Pretend each character is a separate person. Would you want someone to carry you through a mission, or worse, to always carry someone else?
You may think that having two characters doubles the reward of a level. It does. But when you're spending your rewards on two characters, it balances out.
I can singlebox any mission or level up to the skill level of my first character. I can dualbox any mission or level up to the skill level of my second character. I never play my second character alone.
No mobbing (moving as one unit). It's difficult to see if the characters are in the same place because they both see themselves moving first. I'll have them split when the path splits to scout ahead (though I usually know the side path is a dead end, and go there first). If they're going the same direction, I'll have them walk side by side on the walls of a hallway. I'm not thrown off by the speedy powerup (I can't find its actual name on the wiki) because I'm not using a single set of controls like multiboxers.
I'm only in a guild and friend people with my first character. If I'm invited into a locked party, I either have to go with one character or ask nicely to invite my other. I do get guild invites on my second character, but I'm a little fuzzy on whether it would be spying to join two, or wasting a guild slot to join my main's.
I try to make people aware of what I'm doing, usually by saying /me is Khonkhortisan, or /me looks deeply into Khonkhortisan's eyes and sees... himself., or synchronized dancing.
Input Devices:
When I play using just Khonkhortisan (for the missions too difficult for my second character's level, or in parties that fill up quickly), My left hand is on the mouse for aiming with right click for shooting, and my right hand is on the joystick for moving, with the trigger also for shooting.
When I play using both, Nasitrohknohk is using .oeu (on dvorak, esdf on qwerty) to move and shift-.oeu to aim. This means I can't move and turn at the same time, which doesn't matter for a bomber. Khonkhortisan is using joystick to move, and joystick hat to aim. I usually only aim in four directions that way, because I don't hold the hat down to keep it diagonal, having to press a shield button as well.
I have two mice and two mouse cursors (and two keyboards) to keep focus on both windows so they will both accept input. A keyboard only follows one mouse, but the joystick follows both. So the keyboard character has to have the joystick controls unassigned.
Gameplay:
You end up looking at one character, looking at the other, looking at the first again, and looking at the second through the same window. The more stuff that's going on in the room, the more eyes switch and the more focused you have to be to stay alive like you would with one character.
I got a freeze bomb quickly so that I could use my bomber to block off the exit to a hallway with chainbombing, where the gunner can pick the monsters off while they're standing there.
If I see a Lumber I'll freeze it with the bomber, poison with the gunner's maskeraith, shoot off a set of five shots (I've gotten into the habit of only shooting five rounds and pausing for the imaginary reload so I can always shield when I need to, though my bomber doesn't shield because of always holding a bomb. I have trapped my bomber in ice before.) with a silver six, then chainfreeze it again. I haven't actually gotten into the habit of using the seraphynx yet, but I see its value in the third talent being a group shield.
I collect both dark matter and luminite for my battle sprites, breaking them with the gunner because the bomber is slow at getting three attacks in.
At the time of this writing,
I'm an eternal orb away from argent peacemaker, have obsidian carbine, blitz, and 4* gunner armor.
I have a freezing vaporizer mk II, twisted spine cone, a new graviton charge, and 3* bomber armor.
You can see I'm partial to pure damage types.
I used to use a third weapon slot, but have stopped doing so. Now I have four weapons (two per character), so I can always have one character with the correct damage type, elemental, shadow, or piercing.
Other games:
I can dualbox in kobo deluxe, fireboy and watergirl, anything simple enough that one character can be played with one hand. I can't dualbox in rotmg. Stare at one character too long, and the other one has died forever. I've heard of Brothers: A Tale of Two Sons, a paid game with dualboxing already set up, but haven't tried it.
I have simplescreenrecorder set up to stream to twitch.tv, so I could produce a video to link to here.
Setup:
These instructions are for linux only. Windows doesn't seem to have a native way to create two mouse pointers.
If you want to copy me, please read the whole thing first to know if you can even do this before you try. (this is very complicated)
I shall try to go in chronological order as if I'm starting over.
Download the game client and install to /home/user1/spiral
Create an account, then a SINGLE character (the gunner) on that account. Trying to log in with a second character on the same account will log you out of the first character.
Leave the Music/Effect/UI Volume on. This will be the client you hear out of. (You don't want to hear echoes when one character hears what the other is doing)
Set the video options as low as possible, but do not cull transients. You'll want to see the bomb radius on both screens.
Setup the controls to use the gamepad, with both the joystick hat, and mouse for aiming. I kind of ran out of buttons for pickups on my joystick, so I have to move the mouse that the keyboard follows to my main character to use health pills, then move it back.
All of your settings are saved to /home/user1/.java/.userPrefs/projectx/prefs.xml (on windows this is in your registry). Because the settings are there, you cannot simply run two clients, make them both accept input, and be able to control them separately without changing the controls of one every time you start. I consider this bad design to save settings per-computer user instead of per-account, because there may be someone out there with two children and only one login on the computer.
So you need another user to have a separate set of controls (I haven't found a convoluted way of having both clients use a separate copy of the same file)
Create a new user and home directory for that user. If your username is Knight, the other one should be Knight2. Don't re-use someone else's login on your computer.
As root, set user2's password to nothing "".
I tried to make it a passwordless login by using visudo to add the line
user1 ALL=(user2) NOPASSWD: ALL
to the file /etc/sudoers, but it didn't work for me.
Switch to user2.
Install to /home/user2/spiral. If the installer is named something like ~/Downloads/spiral-install(1).bin it won't install because it can't find itself because it's not named spiral-install.bin
Start user2's spiral client and create a second account, then a single character (the bomber) on that account.
Turn off the Music and Effect Volume (again, to remove echoes) and leave UI Volume on.
Set the video options low except for cull transients again.
Setup the controls to use the keyboard only, with mouse for using the menus.
Add the first character as a friend.
You'll have to get partway to Haven by yourself.
Switch to user1.
cd /home/user1/spiral
touch spiral2 splitwindows dualbox
chmod +x spiral2 splitwindows dualbox
spiral2 starts the second client as the second user. splitwindows resets the resolution. dualbox resets the resolution, then starts both clients.
spiral2 starts the second client as the second user.
/home/user1/spiral2:
#!/bin/sh
echo "" | su - -c /home/user2/spiral/spiral user2; echo
echo "" is the empty password for user2. The last echo places a newline between Password: and your next command prompt.
splitwindows resets the resolution of both clients.
Spiral Knights allows setting windowed/fullscreen mode. It should be windowed to play two clients. It also has some preset resolutions up to your screen size. If you have a normal-sized monitor, and don't have two monitors, you'll probably have to use a window size smaller than double the smallest size allowed by the client. A custom size can be set by changing ~/.java/.userPrefs/projectx/prefs.xml
This breaks things like (the left side of) the auction house and missions menus, because they go off the edge of the window. If I want to go back a few missions, or buy something at auction, I change the window size, do that, then quit my client, change the file, and start it up again.
This could be a request for a feature to change the window size to a custom resolution in-client without restarting with the warning that a size smaller than the smallest default may make certain menus unusable.
My screen resolution is 1440x900. I divide the screen in half so the clients are on the left and right which matches up with where my input devices are. Your windowmanager will add a few pixels for the window border and titlebar. Mine, KDE 4.40.5, adds 8x25 pixels to any window.
I have my taskbar set to - click on the rightmost icon (Panel Tool Box), More Settings, - Windows can cover. This lets me use the full vertical resolution of my screen for the game clients.
So divide your screen in half (720x900) and subtract the window decorations (712x875). Replace the following resolutions and users with your own.
/home/user1/splitwindows:
#!/bin/sh
sed -i 's-.*fullscreen.*- <entry key="fullscreen" value="false"/>-' /home/user1/.java/.userPrefs/projectx/prefs.xml
sed -i 's-.*display_mode.*- <entry key="display_mode" value="712, 875, 0, 0"/>-' /home/user1/.java/.userPrefs/projectx/prefs.xml
sed -i 's-.*fullscreen.*- <entry key="fullscreen" value="false"/>-' /home/user2/.java/.userPrefs/projectx/prefs.xml
sed -i 's-.*display_mode.*- <entry key="display_mode" value="712, 875, 0, 0"/>-' /home/user2/.java/.userPrefs/projectx/prefs.xml
KDE also has a way to force a window with a specific title "Spiral Knights - Character1" to be in a certain position on the screen (click on the leftmost button on the titlebar, More Actions, Special Window Settings, Size and Position), but I haven't set this up because I change the window size to use the auction house, so it isn't always splitscreen. Forcing the resolution doesn't work, the client will just draw græy on any pixels it doesn't think it has.
dualbox resets the resolution, then starts both clients.
/home/user1/dualbox:
#!/bin/sh
./splitwindows
./spiral
./spiral2
To make this all work, you'll need some way to keep both clients in focus so they both receive input. I have no idea how to do this on windows.
Plug in a second mouse, and optionally, a second keyboard. You can also go full-keyboard if you want two bombers, or intend on moving and aiming at the same time one-handed with a swordsman or gunner.
I'm using the xinput command to create a second mouse pointer.
xinput list with one mouse pointer:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Microsoft Microsoft 5-Button Mouse with IntelliEye(TM) id=8 [slave pointer (2)]
⎜ ↳ Logitech M+ Mouse id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Power Button id=7 [slave keyboard (3)]
↳ Logitech USB Keyboard id=9 [slave keyboard (3)]
↳ Logitech USB Keyboard id=10 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
xinput list with two mouse pointers:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Microsoft Microsoft 5-Button Mouse with IntelliEye(TM) id=8 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Power Button id=7 [slave keyboard (3)]
↳ Logitech USB Keyboard id=9 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
⎡ Auxiliary pointer id=13 [master pointer (14)]
⎜ ↳ Logitech M+ Mouse id=12 [slave pointer (13)]
⎜ ↳ Auxiliary XTEST pointer id=15 [slave pointer (13)]
⎣ Auxiliary keyboard id=14 [master keyboard (13)]
↳ Logitech USB Keyboard id=10 [slave keyboard (14)]
↳ Auxiliary XTEST keyboard id=16 [slave keyboard (14)]
Please don't collapse spaces within tags.
This script never seems to work exactly right with all the ways I mess with my keyboard, so I removed some lines for you.
/home/user1/bin/mice:
#!/bin/bash
two=`xinput list | grep "Auxiliary keyboard"` #one to two or two to one
xinput remove-master "Auxiliary pointer" 2> /dev/null #remove duplicates without error
if [ -z $two ]
then
xinput create-master Auxiliary #second mouse pointer
xinput reattach "Logitech M+ Mouse" "Auxiliary pointer" #second mouse
xinput reattach 10 "Auxiliary keyboard" #second keyboard
else
xinput reattach "Logitech M+ Mouse" "Virtual core pointer"
xinput reattach 10 "Virtual core keyboard"
fi
xinput list
The second keyboard is referenced by id because they both have the same name.
To play:
As user1
cd /home/user1/spiral
mice
./dualbox
Move the first user/account/character's window to the right, and the second to the left.
use the main mouse and main keyboard to log into both accounts in both clients
start a mission with your second character (because that one most likely has to catch up to the level of the first character)
Join your second character with your first character
Click on the right window (the joystick gunner) with the second mouse to focus it to allow joystick input to that window.
Click on the left window (the keyboard bomber) with the first mouse to focus it to allow keyboard input to that window.
You can now control your first character with joystick separately and simultaneously with controlling your second character with keyboard.
v-- /me looks forward to the rest of this thread --v
Congrats on letting the GMs know you have a good possibility of keyboard macro'ing lockdown.