Spillet
Formålet med dette projekt er at lave en UNIX/Linux genskabning af det berømte DOS-spil "Stunts"."Det gamle spil"
Det originale DOS-spil (udviklet af Broderbund og Mindscape) kan hentes fra adskillige abandonware-sider, fx XTC -siden.Stunts er et 3D racerbil-spil, med simpel CGA/EGA/VGA grafik og ingen textures eller smooth shading, men på grund af de spektakulære stunts (loops, broer der kan hoppes over osv.) var det virkelig sjovt at spille. En af de bedste ting ved spillet er, at det har en bane-designer. På grund af de felt-baserede baner, kunne enhver spiller uden videre designe sine egne baner.
Ligheder og forskelle
UltimateStunts vil blive et Spil, der på mange måder ligner Stunts:- Det er et 3D racerbil-spil
- Det er muligt (og ret enkelt) at bygge dine egne baner
- Banerne er bygget op af store felter, kaldet 'tiles'
- Det kan spilles på en relativt lille computer
- Spillene deler nogle ret spektakulære stunts
- Du kan køre hvorhen du vil (men du får straftid for det)
- Platform-uafhængighed: UltimateStunts er open source og bruger platform-uafhængige libraries hvis muligt.
- 3D-lyd
- Bedre baner: Banestørrelserne (l*b*h) er variable, og felter kan placeres ovenpå hinanden.
- Bedre grafik (baseret på OpenGL, med teksturer, smooth shading, reflektioner osv.
- Multiplayer: Det oprindelige spil tillod 1 menneskelig spiller og maskimalt 1 computer-spiller. UltimateStunts bliver et IP-based netværks-spil, ned en server og både menneskelige og computerbaserede spillere
- Et udvidet sæt af felter og baner. Du kan faktisk udvide din samling af felter og baner med tilføjelses-pakker.
Detaljeret specifikation
Spillet
Spillet bliver et tredimensionelt racerbil-spil, hvor design af egne baner og udførsel af stunds, som den væsentligste del af spillet. Fysikken vil blive quasi-realistisk: Spilbarheden er mere vigtig end realismen. En spiller kan have som mål, at vinde over de andre modstandere, få en høj score eller bare designe baner, som er lange, hurtige, sjove eller (næsten) umulige at gennemføre.Multi-player
Spillere får mulighed for at køre som de har lyst (bare for at komme ind på highscore-listen), mod andre computerstyrede modstandere, mod deres venner i split-screen eller gennem netværk over LAN eller internet. Det er også muligt at kombinere disse spilformer, for eksempel at spille mod computer-styrede modstandere over internettet.Netværk
Når netværk-kommunikation er involveret i et spil, startes et seperat serverprogram på en af computerne. Det vil være muligt at starte serveren gennem et menupunkt i klient-programmet, men det vil også være muligt at starte den manuelt på en dedikeret server-computer. Alle klient-programmerne, som er involveret i spillet, skal forbinde til en server. Serveren sender ikke kun data til alle spillerne på netværket; den fungerer også som dommer. Spillets simulation vil blive afviklet på serveren, og alle lokale simulatorer skal synkroniseres med serveren. Serveren bestemmer også hvilken bane, der spilles på, ligesom den bestemmer hvilke biler, der er tilladt. Alle filer skal ligge på serveren, og hvis de ikke findes på én af de anvendte computere, kan klienten downloade de manglende filer automatisk.Grafik
Ultimate Stunts kan byde på høj-kvalitets 3D grafik, men er meget fleksibel, når det kommer til dette punkt. For at bevare et så spilbart spil som muligt, kan også platforme uden hardware-accelreret grafik, få mulighed for at afvikle spillet i en grafisk neddroslet udgave. Omvendt kan high-end platforme, anvende avancerede teknologier.Banerne
Banerne består af kvadratiske felter, ligesom i Stunts. Forskellene er:- Størrelsen på en Ultimate Stunts bane er ikke fastlåst. Baner kan gøres meget store. Begrænsende faktorer kunne være størrelsen af heltal (data som overføres over netværket som 32-bit heltal; positioner ganges med 1000 for at sikre præcision ned til 1 mm), præcision af floating point-værdier (nogle beregninger udføres i hele koordinator), eller hukommelse. Mængden af hukommelse, som bruges på store baner er ikke ret stor, fordi der kun gemmes få data pr. felt. Data som definerer hvilket felt, der er tale om, hvordan feltet vender, og højden.
- I Stuntes, defineres en landskabstype og en felttype for hvert felt på kortet. Det gør det umuligt at placere felter ovenpå hinanden, og sætter samtidig en begrænsning på højdeforskelle. I Ultimate Stuntes, bliver banerne et tredimensionelt område bestående af felter. I en bane med n lag, kan et maksimum af n felter placeres ovenpå hinanden. For hver plads i dette treminsionelle net, defineres tre værdier: En refererer til hvilken felt-type, en beskriver feltets rotation (0,1,2 eller 3) og en tredje definerer højden på feltet (målt i enheder af 1 felt). Den sidste værdi gør det muligt at skabe meget store højdeforskelle med kun nogle få lag.
- De felter der kan bruges i Ultimate StuntsThe tiles vil ikke være begrænset til et fastlåst sæt. Hver enkelt felttype vil blive lagret i sin egen fil, og bane-filerne vil referere til disse filer.
Bane-designer
Banedesigneren vil være et bruger-venligt program til manipulering af baner. Det vil være muligt at starte banedesigneren fra et menupunkt i selve spillet. Fordi baner i Ultimate Stunts er mere 3D end baner fra Stunts, vil designeren blive mere kompleks. Den vil minde mere om rutsjebane-designeren i RollerCoaster Tycoon. Den grundlæggende ide er, at der skal være en "markør" i hver ende af vejen. Brugeren kan så vælge om vejen skal dreje til venstre eller til højre, om den skal gå op eller ned, om der skal være et stunt osv. Bane-designeren vil så tilføje de rigtige ændringer til banen. Banedesigneren vil naturligvis også validere banen, og sørge for at man ikke kan lave ugyldige ændringer. Bane-designeren kommer også til at have mulighed for import af originale Stunts-baner.Gentagelser
Ligesom i Stunts, bliver der i Ultimate Stunts mulighed for at lave og se gentagelser (det bliver dog ikke muligt at læse originale Stunts-gentagelser). Gentagelser fra Ultimate Stunts vil indeholde hver eneste position, og orientering for alle objekter i bevægelser og for hvert eneste billede. Med de rette konverterings-værktøjer, kan disse data indporteres til animations-programmer (som fx 3D Studio), for eksempelvis at lave en intro-video til Ultimate Stunts. I Ultimate Stunts bliver det også muligt at bruge en gentagelse som en "spøgelses-bil".Stunts3dedit-designeren
Da dette projekt blev påbegyndt, var der ingen planer om en 3D-editor, men så snart der blev brug for komplekse felt-typer, blev den alligvel lavet, for at reducere bøvlet med at skrive definitionerne i tekst-filer. 3D-editoren bliver, hvad den er nu: Et simpelt værktøj for meget enkel poligon-manipulation, med nogle få avancerede modifikatorer. En funktion som bliver stadig mere vigtig er muligheden for at importere fremmede fil-formater. Sådan skal den bruges: Lav en model i et eksternt redigeringsprogram, importer den i Stunts3dedit, lav nogle ændringer og gem den til brug i Ultimate Stunts.Systemkrav
UltimateStunts er meget fleksibel, når det kommer til systemkrav: Det kan afvikles på computere uden hardware-acelration, men det er kun muligt at drage fuld anvendelse af 3D-teknologi i moderne computere.De følgende ting kræves, for at få programmet til at fungere i Windows:
- Windows 95,NT eller højere (Men Wine, Windows-emulatoren til Linux, wil sikkert også virke)
- openGL (eller Mesa) installation (standard på de fleste systemer)
- X-windows systemet
- openGL (eller Mesa)
- SDL (tidligere versioner brugte glut)
- BSD netværks-ibrary (altid(?) tilgængeligt på BSD og Linux systemer)
For at få et pænt flydende spil, kræves det følgende:
- Pentium 200MHz processor eller højere (eller noget sammenligneligt på ikke-PC platforme)
- Et grafikkort med hardware accelration, som understøttes af openGL
- Lyd (af FMOD eller openAL)
- Joysticks
Teknologien
De primære udviklingsplatforme er Linux og Cygwin (= i windows), men jeg forsøger at holde det porter-bart med andre Unix-lignende miljøer, som fx MacOS/X. For grafik og input, bruges openGL/SDL kombinationen. Netværk er lavet med standard UNIX (BSD) netværks-funktioner. Spillets kommunikation vil bruge UDP/IP. Lyd er implementeret både gennem FMOD og openAL.Projektet byder på en række forskellige programmer. Disse inkluderer de følgende:
- Selve UltimateStunts programmet, der sørger for grafik, lyd osv. Programmet sørger også får et lækkert grafisk bruger-interface.
- Et server-program
- En AI klient
- En enkel 3D editor, som kan bruges til ændring af felter, og import fra fremmede filformater.
- En bane-designer
Netværk og simulation
Funktionaliteten af de forskellige programmer, som er involveret i en spil-afvikling er meget fleksibel, idet den mest optimale konfiguration vil afhænge af netværks-parametrene, såsom båndbredde. Den følgende tekst beskriver fremtidige versioner. Den gælder altså IKKE for den nuværende version.I et lokalt spil, hvor kun en computer anvendes til afvikling af spillet, afvikles alle ting (inklusiv grafik, computerspillere og fysik) af et enkelt program. Når mere end én menneskelig spiller er involveret, i et netværksbaseret spil, vil data blive distribueret af server-programmerne. Simulationen af fysikken vil blive varetaget af serverprogrammet, men (afhængigt af den båndbredde, der er til rådighed), overtager nogle klientprogrammer beregningsprocessen, for at kompensere for en langsom forbindelse til serveren.
Computerstyrede spillere kan startes både fra serveren og fra UltimateStunts klienten. De kan også tilføjes ved brug af de særlige AI-klient program. Eksperter, som ønsker den optimale ydelse, kan bruge server-programmet til at fungere som en klient. På den måde, kan server-programmet logge ind på et internet-spil over en langsom forbindelse, og agere server for forskellige spillere i et LAN. Det muliggør deling af en enkelt klient-server forbindelse mellem flere spillere.