[ 6.900048] [drm] Driver supports precise vblank timestamp query.
[ 6.946226] nouveau 0000:01:00.0: DRM: MM: using COPY0 for buffer copies
[ 6.986438] nouveau 0000:01:00.0: No connectors reported connected with modes
[ 6.990638] [drm] Cannot find any crtc or sizes - going 1024x768
[ 7.037494] nouveau 0000:01:00.0: DRM: allocated 1024x768 fb: 0x60000, bo ffff880119ac8000
[ 7.038167] fbcon: nouveaufb (fb0) is primary device
[ 7.057025] tg3 0000:05:00.0 eth126: renamed from eth0
[ 7.057201] Console: switching to colour frame buffer device 128x48
[ 7.058711] nouveau 0000:01:00.0: fb0: nouveaufb frame buffer device
[ 7.061913] [drm] Initialized nouveau 1.3.1 20120801 for 0000:01:00.0 on minor 0
[ 7.061954] tg3 0000:05:00.0 eth1: renamed from eth126
[ 7.093948] i2c /dev entries driver
[ 7.666181] usb-storage 2-1.2:1.0: USB Mass Storage device detected
[ 7.666284] scsi host8: usb-storage 2-1.2:1.0
[ 7.666421] usbcore: registered new interface driver usb-storage
[ 7.669848] hidraw: raw HID events driver (C) Jiri Kosina
[ 7.674298] usbcore: registered new interface driver uas
[ 7.677695] ums-realtek 2-1.4:1.0: USB Mass Storage device detected
[ 7.678872] usbcore: registered new interface driver usbhid
[ 7.678884] usbhid: USB HID core driver
[ 7.691809] scsi host9: usb-storage 2-1.4:1.0
[ 7.691923] usbcore: registered new interface driver ums-realtek
[ 7.779904] usb 2-1.1: Warning! Unlikely big volume range (=17152), cval->res is probably wrong.
[ 7.779927] usb 2-1.1: [2] FU [PCM Playback Volume] ch = 2, val = 0/17152/1
[ 7.780068] usbcore: registered new interface driver snd-usb-audio
[ 7.810411] usb 2-1.4: USB disconnect, device number 5
[ 7.896230] input: USB AUDIO as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.2/0003:1130:1620.0001/input/input7
[ 7.947220] hid-generic 0003:1130:1620.0001: input,hidraw0: USB HID v1.10 Device [USB AUDIO ] on usb-0000:00:1d.0-1.1/input2
[ 8.036930] Adding 4194300k swap on /dev/sda1. Priority:-1 extents:1 across:4194300k
[ 8.103926] fuse init (API version 7.23)
[ 8.446249] EXT4-fs (sda2): re-mounted. Opts: (null)
[ 8.670258] scsi 8:0:0:0: Direct-Access WD Ext HDD 1021 2021 PQ: 0 ANSI: 4
[ 8.672945] sd 8:0:0:0: [sdb] 1953519616 512-byte logical blocks: (1.00 TB/932 GiB)
[ 8.675124] sd 8:0:0:0: [sdb] Write Protect is off
[ 8.675378] sd 8:0:0:0: [sdb] Mode Sense: 17 00 10 08
[ 8.677374] sd 8:0:0:0: [sdb] No Caching mode page found
[ 8.677616] sd 8:0:0:0: [sdb] Assuming drive cache: write through
[ 12.311525] EXT4-fs (sda3): mounted filesystem with ordered data mode. Opts: (null)
[ 15.992701] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 16.004925] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[ 16.654602] NET: Registered protocol family 10
[ 16.654757] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[ 18.039591] tg3 0000:05:00.0 eth1: Link is up at 1000 Mbps, full duplex
[ 18.039596] tg3 0000:05:00.0 eth1: Flow control is on for TX and on for RX
[ 18.039627] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[ 19.465736] sdb: sdb1
[ 19.472849] sd 8:0:0:0: [sdb] Attached SCSI disk
[ 22.904727] nf_conntrack: automatic helper assignment is deprecated and it will be removed soon. Use the iptables CT target to attach helpers instead.
[ 3685.423293] usb 2-1.1: USB disconnect, device number 3
[11663.191185] usb 2-1.1: new full-speed USB device number 6 using ehci-pci
[11663.278365] usb 2-1.1: New USB device found, idVendor=1130, idProduct=1620
[11663.278371] usb 2-1.1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[11663.278375] usb 2-1.1: Product: USB AUDIO
[11663.281569] usb 2-1.1: Warning! Unlikely big volume range (=17152), cval->res is probably wrong.
[11663.281575] usb 2-1.1: [2] FU [PCM Playback Volume] ch = 2, val = 0/17152/1
[11663.282760] input: USB AUDIO as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.2/0003:1130:1620.0002/input/input8
[11663.333415] hid-generic 0003:1130:1620.0002: input,hidraw0: USB HID v1.10 Device [USB AUDIO ] on usb-0000:00:1d.0-1.1/input2
[182044.897407] EXT4-fs (sdb1): mounted filesystem with ordered data mode. Opts: (null)
[378524.502474] ucc-bin[1907]: segfault at a6c ip 00000000f736d407 sp 00000000ffff45b0 error 4 in Core.so[f72ec000+af000]
[449248.145277] ucc-bin[10266]: segfault at a6c ip 00000000f73c3407 sp 00000000ffb7be70 error 4 in Core.so[f7342000+af000]
[583389.059670] ucc-bin[11136]: segfault at a6c ip 00000000f73ff407 sp 00000000ff886470 error 4 in Core.so[f737e000+af000]
[585175.048859] ucc-bin[1252]: segfault at a6c ip 00000000f7387407 sp 00000000ffcbcdb0 error 4 in Core.so[f7306000+af000]
[625500.138855] ucc-bin[22982]: segfault at a6c ip 00000000f73db407 sp 00000000ffd631b0 error 4 in Core.so[f735a000+af000]
[628767.467561] ucc-bin[12115]: segfault at a6c ip 00000000f7362407 sp 00000000ffbe3a30 error 4 in Core.so[f72e1000+af000]
[629127.188362] ucc-bin[4024]: segfault at a6c ip 00000000f7315407 sp 00000000ffa42130 error 4 in Core.so[f7294000+af000]
[638685.336725] ucc-bin[20405]: segfault at a6c ip 00000000f73ed407 sp 00000000ffeb4570 error 4 in Core.so[f736c000+af000]
[639855.702649] usb 1-1.1: new high-speed USB device number 3 using ehci-pci
[639855.788463] usb 1-1.1: New USB device found, idVendor=03f0, idProduct=a611
[639855.788477] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[639855.788480] usb 1-1.1: Product: Photosmart 7510 series
[639855.788483] usb 1-1.1: Manufacturer: HP
[639855.788486] usb 1-1.1: SerialNumber: CN19H150DJ05PX
[639855.789103] usb-storage 1-1.1:1.2: USB Mass Storage device detected
[639855.789209] scsi host10: usb-storage 1-1.1:1.2
[639856.791321] scsi 10:0:0:0: Direct-Access HP Photosmart 7510 1.00 PQ: 0 ANSI: 5
[639856.793142] sd 10:0:0:0: [sdc] Attached SCSI removable disk
[647548.658264] usb 1-1.1: USB disconnect, device number 3
[666535.166316] usb 1-1.1: new high-speed USB device number 4 using ehci-pci
[666535.253259] usb 1-1.1: New USB device found, idVendor=03f0, idProduct=a611
[666535.253265] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[666535.253268] usb 1-1.1: Product: Photosmart 7510 series
[666535.253271] usb 1-1.1: Manufacturer: HP
[666535.253274] usb 1-1.1: SerialNumber: CN19H150DJ05PX
[666535.253954] usb-storage 1-1.1:1.2: USB Mass Storage device detected
[666535.254021] scsi host11: usb-storage 1-1.1:1.2
[666536.257179] scsi 11:0:0:0: Direct-Access HP Photosmart 7510 1.00 PQ: 0 ANSI: 5
[666536.259910] sd 11:0:0:0: [sdc] Attached SCSI removable disk
[673758.005808] usb 1-1.1: USB disconnect, device number 4
[687515.025752] usb 1-1.1: new high-speed USB device number 5 using ehci-pci
[687515.111671] usb 1-1.1: New USB device found, idVendor=03f0, idProduct=a611
[687515.111676] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[687515.111680] usb 1-1.1: Product: Photosmart 7510 series
[687515.111683] usb 1-1.1: Manufacturer: HP
[687515.111685] usb 1-1.1: SerialNumber: CN19H150DJ05PX
[687515.112419] usb-storage 1-1.1:1.2: USB Mass Storage device detected
[687515.112876] scsi host12: usb-storage 1-1.1:1.2
[687516.116614] scsi 12:0:0:0: Direct-Access HP Photosmart 7510 1.00 PQ: 0 ANSI: 5
[687516.119553] sd 12:0:0:0: [sdc] Attached SCSI removable disk
[694790.473928] usb 1-1.1: USB disconnect, device number 5
[966747.568572] conntrack: generic helper won't handle protocol 132. Please consider loading the specific helper module.

RANDOM FORTUNE:

Help! I'm trapped in a PDP 11/70!

Compiling UScript in Linux

Tools That You Need

First of all, you cannot compile or export UScript with the native Linux UCC. You need the DLLs and EXEs from the Windows version of the game and Wine.

Head over to http://www.winehq.com and look for a package for your distro or else get the source and compile and install manually.

You will also need to be running either a 32bit OS, or 64bit with multilib (sometimes known as compat32) libraries installed. This is because UT was only ever released as a 32bit application.

alienBob has multilib libraries for Slackware: link.

When Wine is installed, open up winecfg (type winecfg in a terminal) and have a look at your drive letters. The reason for this is we will need to tell Wine where UT is installed later on. You may likely need a path like Z:\path\to\ut... or you may want to manually add the partition on the drives tab. E.G. mine is in H:\

Next you will need UCC.EXE and the DLLs from the Windows UT disk, so copy them from the CD into your ut/System folder.

A Quick Test

cd into your ut/System folder and type wine ucc 2>/dev/null. You should see a message:

=======================================
ucc.exe: UnrealOS execution environment
Copyright 1999 Epic Games Inc
=======================================

Use "ucc help" for help

The 2>/dev/null will suppress any wine errors. So long as you get the welcome message above, all is well.

Exporting Code

The command line is:

wine ucc batchexport PACKAGE class .uc \ UTDir\\PACKAGE\\Classes

You need double \\ or wine will not find the directories. So for example to export all scripts in BotPack do:

wine ucc batchexport BotPack.u class .uc \ h:\\ut\\BotPack\\Classes

Replace h:\\ut with the path to UT you noted from winecfg earlier.

The Command Line Explained

Batchexport tells ucc we want to export something
BotPack.u is the name of the package we want to export
Class tells ucc that we want classes
.uc is the file extension we want
h:\\ut\\BotPack\\Classes tells ucc where to save files to

After issuing this command you should see a list of classes fly past and finally at the end:

Success - 0 error(s), 0 warnings

Now we can cd up a directory and check that there is in fact a BotPack directory with a subdirectory of Classes, containing all the .uc files from BotPack. So far, so good.

Compiling Code

OK so you have some code that you want to compile. It must be in a subdirectory 'Classes' of a subdirectory of your package name, which is a subdirectory of the main UT directory. For example:

ut/MyPackage/Classes/MyScript.uc

Also, you must rename/delete any older compiled package from the System directory before compiling, or your new code will not compile.

Next add your package to the bottom of the EditPackages= list in UnrealTournament.ini e.g.

EditPackages=MyPackage

Now we are good to go. The command line is:

wine ucc make

Now you should either have a success message, or a load of errors. If you get errors ucc is usually kind enough to point you to where they are in the code. If everything went OK you can boot up UT and play with your new toy.

Automating

Wouldn't it be nice not to have to type a whole lot of commands to do this? Yes it would. So I have a few scripts that make decompiling and compiling a lot easier.

My uccmake script:

#!/bin/sh
rm -f /path/to/ut/System/PackageName.u
wine /path/to/ut/System/ucc make 2>/dev/null

Now when I'm working on a package I edit the script with the package name, and then I can just run uccmake in a terminal.

I also have a uccexport script:

#!/bin/sh
wine h:\\ut\\System\\ucc batchexport $1.u class .uc \
h:\\ut\\$1\\Classes 2>/dev/null

Typing uccexport PackageName will export the classes for PackageName, passed as an argument to the script. Note that I have used normal Linux paths in one script, and Windows style paths in the other. Using Linux paths has limited success with ucc.exe, so if one way doesn't work, try the other method.