by • 9 maj, 2010 • ArtiklarComments (6)436

Porta dina favoritspel från Windows

cxz

Windows fanboys använder ofta det svaga utbudet på spel som en anledning att nedvärdera Mac som en dator för hemmabruk.

Vi som kört Mac OS sedan ett bra tag tillbaka har märkt en klart positiv förändring när det gäller spelföretags inställning till Mac OS som potentiell marknad för spelförsäljning. Fortfarande är dock utbudet tämligen svagt i jämförelse med marknaden inriktad på Windows som spel-platform.

För att minska kostnaderna för spelbolagen att porta över sina spel till Mac OS från Windows så har man börjat använda sig av såkallade wrappers.

En wrapper i detta sammanhang kan man säga är en typ av brygga mellan en applikation och operativsystemet vilket översätter applikationens systemanrop till något som operativsystemet kan förstå och hantera.

Detta gör att man kan köra applikationer/spel skrivna för Windows i Mac OS. Man har implementerat stöd i mjukvaran som wrappern använder för att kalla på Windows anrop så kallade ”API calls”, dessa är nödvändiga för bland annat ljud, bild och direct x funktioner som spelet eller applikationen behöver för att fungera.

Samtliga Windows wrappers är i grund och botten baserade på ett gammalt UNIX projekt vid namn WINE som började utvecklas redan 1993 och har sedan stadigt fortsatt att växa till ett riktigt massivt och väl fungerande system för att köra Windows applikationer i andra miljöer.

Spelbolagen använder sig i de flesta fallen av en kommersiell wrapper vid namn Cedega vilken bland annat användes till Electronic Arts portar av Red Alert 3 och SPORE.

Eftersom samtliga Windows wrappers är så kallade forkar av WINE, dvs att dom baseras på samma kodbas som WINE, är utförandet av portning för applikationer snarlikt  för samtliga wrappers.

Som exempel kommer vi här gå igenom hur man portar det för övrigt helt fenomenala äventyrsspelet Syberia från Microïds via wrappern CXZ Amethyst.

Vilken mjukvara krävs för att porta Syberia?

  1. Spelet Syberia.
  2. Apple’s Mac OS SDK krävs för att så smidigt som möjligt kunna editera nödvändiga .plist filer.
  3. Motorn för Windows wrappern CXZ Amethyst som innehåller diverse bibliotek som krävs för att starta wrappern.
  4. Slutligen själva wrappern CXZ Amethyst vi skall använda för att porta Sybaria med.

Nu kör vi!

1. Installera Syberia

Själva wrappern innehåller enbart systemfiler för Windows vilket innebär att vi måste få tag på en installationskatalog från en befintlig installation Syberia, för att lösa detta finns ett par olika alternativ.

  • Boot Camp
    Ett alternativ är att installera ditt spel på en Windows installation via Apple’s Boot Camp för att sedan kopiera spelets installationskatalog från din Boot Camp disk till din wrapper i Mac OS.

  • CXInstaller
    CXZ wrappern inkluderar ett verktyg som heter CXInstaller och är till för att installera Windows baserad mjukvara direkt i Mac OS. När du startar verktyget behöver du endast välja sökväg till installationsfilen av spelet för att sedan luta dig tillbaka och låta den installera spelet och automatiskt i din wrapper.

    cxinstaller

  • VirtualBox
    Med hjälp av VirtualBox kan du snabbt och smidigt installera upp en virtuell Windows installation för att sedan installera ditt spel i Windows utan att ens behöva starta om din dator. Sedan är det bara att kopiera över installationsfilerna via nätverket från din virtuella dator till din Mac.

För att du skall få spelet att fungera i en wrapper måste du även lägga in en så kallad ”nocd crack” efter spelets installation, detta innebär att man deaktiverar spelets kopieringsskydd. Att cracka ett spel är potentiellt olagligt så vi kommer därmed inte beskriva hur man går tillväga eller länka till detta (Google är din vän).

2. Installera CXZ Amethyst och börja portningen

Installera Apple’s Mac OS SDK om du inte redan har detta installerat.

Ladda sedan ner och installera Motorn för CXZ Amethyst samt wrappern och placera den i valfri katalog på din Mac.

Gå till katalogen du placerade din wrapper och högerklicka på filen och välj ”Show Package Contents”.

01

Du ser nu innehållet i själva wrappern, under katalogen ”Contents” ligger 5 körbara program du kan använda dig av som verktyg för att hjälpa dig med portningen.

  • CXregedit
    De flesta inställningarna i Windows är lagrade i ett så kallat ”Registry” som olika nycklar, vissa spel kräver att man exporterar nycklarna som spelet skapat i registret för att sedan importerar dessa i wrappern genom att använda just detta verktyg.
  • CXWinecfg
    Med hjälp av detta inställningsverktyg kan du konfigurera WINE specifika inställningar som upplösning, sökvägar till kataloger och annat.
  • CXInstaller
    Verktyg att underlätta installationer av Windows program.
  • CXWinetricks
    WineTricks är ett verktyg för att underlätta installationer av paketinstallationer som kan behövas för att köra vissa spel och program.
  • CXCustomEXEMaker
    Detta verktyg kan användas för att skapa egna applikationer start av installerade Windows program.

Dessa program kan behöva användas specifikt för vissa spel men i fallet med Syberia kommer vi endast att behöva köra programmet CXWinetricks.

02

Efter du startat CXWinetricks får du upp en lång lista på paket du kan installera, välj ”vcrun6” och klicka sedan på OK. Vänta några minuter tills ett resultatfönster visas, klicka sedan Close.

04

Nu när du installerat alla nödvändiga paket behöver vi själva installationskatalogen för Syberia. CXZ fungerar så att wrappern skapar en virtuell C:\ (systemdisk) när den körs för att på så vis få spelet att tro att det körs under Windows. Detta innebär att spelets installationskatalog måste ligga på rätt plats i katalogstrukturen för din wrapper.

Kopiera din installation av Syberia till katalogen Contents/SharedSupport/CrossOverGames/support/default/drive_c/Program Files/ och döp den till Syberia om den inte redan är döpt till detta.

05

Eftersom din wrapper endast är ett skal måste vi peka ut vilken fil som wrappern skall exekvera vid start.

För att göra detta måste vi använda ett program som installeras tillsammans med Apple’s SDK (XCode) för MacOS, programmet heter Property List Editor och är installerat i katalogen /Developer/Applications/Utilities/.

Gå till din wrappers katalog och högerklicka på filen Info.plist som ligger under katalogen Contents, välj sedan Open With och öppna filen med Property List Editor.

06

I fönstret som nu visas finns olika attribut som är sparade för din wrapper, här finns det två olika attribut vi är intresserade av att ändra.

Det första av attributen heter CXOEMWorkdir, detta attribut talar om för din wrapper vilken katalog ditt spel är placerat under, dubbelklicka i kolumnen till höger på raden och ändra texten till /Program Files/Syberia/.

Den andra raden vi vill ändra på är CXOEMCmdLine, detta attribut beskriver för din wrapper vilken binär som skall exekveras dvs. vilket fil från spelet wrappern skall köra vid start, ändra detta till /Program Files/Syberia/Syberia.exe.

Efter du korrigerat dessa två attribut sparar du förändringarna i din plist fil genom att hålla nere CMD och trycka S.

07

Du kan nu testa att starta din portning genom att klicka på CXZ Amethyst ikonen. Lyckas din wrapper starta spelet får vi gratulera dig till din första lyckade portning.

Screen shot 2010-05-09 at 5.16.46 AM

3. Byte av ikon

Om du inte tycker att CXZ ikonen passar för ditt spel kan du enkelt byta ut den genom att ersätta filen ”CXZicon.icns” som är placerad under Contents/Resources/ i din wrapper med en ny ikon.

Ett riktigt bra tips när det gäller att skapa egna ikoner är att använda dig av sidan iConvert där du kan konvertera vanliga bilder till Mac OS ikoner.

Behöver du mer information om felsökning eller annan nyttig information om portning kan du besöka The Porting Team vilket är en sida helt dedikerad för portningar av just spel och program för Mac OS.

  • John Eriksson

    öh, vadå kan jag ta vilket pc-spels om helst och göra om det på det här viset och köra det utan windows?

  • styrbjorn

    Teoretiskt sett kan du få igång alla spel som använder sig av Direct X 9 eller tidigare.

    Dock får man ha i åtanke att eftersom WINE är en reimplementation av befintliga API’t från windows så finns det buggar och en del annat som vissa spel inte gillar.

    Det bästa sättet att kontrollera om spelet troligtvis kommer att fungerar är att kika på http://appdb.winehq.org/ och se vad andra skrivit om spelet.

    Du kan även behöva köra någon annan variant en CXZ wrappern då varje release av CXZ inkluderar olika versioner av WINE.

    Beskrivningarna av versionerna kan du hitta på http://forum.portingteam.com/viewtopic.php?f=107&t=3723, tror dock du måste registrera dig på forumet först.

  • Gustaf Berlin

    @John: Du skulle inte ha lust att porta klassikerspelet Warlords / Warlords 2 till OS X??

  • John Eriksson

    Nej sånt där hemma-tids-pyssel ger mig inte jag in i…
    jag blir bara förvånad att spelutvecklarna inte själva gör det om det nu är så enkelt.

  • Nu är det dock så att WHINE är instabillt, och rekommenderas verkligen inte.
    Vad är problemet i att äga en mac och en PC? Jag gör’t!

  • styrbjorn

    @Pastebin WINE heter det och det är inte instabilt, hur menar du nu? Det fungerar bra med dom spelen som fungerar i WINE men oftast lite slöare än att köra dom native i Windows. Du får gärna utveckla ditt resonemang lite!