Hvordan lære Polycode

Polycode er en fri, åpen kildekode (lisensiert under MIT-lisensen), og cross-platform "rammeverk for kreativ koding". Dette begrepet er sjelden hørt i spillutviklingssamfunnet, men hva det egentlig betyr er enkelt: Polycode gir deg verktøy for å uttrykke kreativiteten din via kode, og selv om den er fullt kvalifisert til å bære "spillmotor"Moniker, det foretrekker det ikke. Årsaken er enkel: Polycode kan (og ofte) brukes til prosjekter som omfatter mer enn interaktive spill, for eksempel visualiseringer som brukes til underholdning eller i vitenskapelige formål.

Jeg har brukt Polycode for for det meste små spill, men også for et utenom det vanlige zoomingsgrensesnittet og hadde like stor suksess i å utvikle alle prosjektene. La oss ta en titt på hva Polycode kan tilby deg, og forhåpentligvis få deg interessert i å lære å jobbe med dette fantastiske rammeverket.


Hva gir Polycode?

Siden dette ikke er et salgsfremmende stykke for rammen, vil jeg prøve å understreke viktige funksjoner som kan være av interesse for spillutviklere uten å gå i overflødig detalj.

  • 2D og 3D grafikk: Polycode-rammeverket gir deg enkle, effektivt utformede systemer for tegning av 2D- og 3D-grafikk. Det gjør det ikke på bekostning av fart, og det ofrer ikke funksjoner som avanserte brukere krever - en prestasjon som mange av dagens populære rendering motorer ikke klarer å trekke av. I begynnelsen mistenkte jeg at Polycode ville gi meg bare grunnleggende 3D-grafikkfunksjoner, men jeg endret meg når jeg så hvordan rørledningen ble designet. det er så tilpassbart som det blir, og det gjør det mulig å implementere metoder som lys pre-pass eller utsatt skyggelegging uten å endre rammekoden.
  • Inngangshåndtering: Polycode lar deg håndtere mus, tastatur, joystick og berøringsinngang via sitt enhetlige hendelseshåndteringssystem. Denne funksjonen er åpenbart viktig for alt som kommer nær å kalle seg en spillmotor.
  • Nettverksstøtte: Nettverksgrensesnittet ser ikke ut til å være for komplisert og ofrer heller ikke funksjoner. Jeg har ikke brukt det mye personlig, men så langt har det aldri gitt noen problemer for meg, og jeg vet at det er brukt mye av de mest anerkjente prosjektene som er utviklet ved hjelp av plattformen.
  • Audio: Med Polycode kan du spille 2D og 3D posisjonslyd, komplett med funksjoner som streaming (for lange lydfiler som musikkspor). Funksjonen som er satt her er ikke spektakulær, men det bør være nok for behovene til de fleste indie spillutviklere der ute.
  • 2D og 3D fysikk: Realisert via plugins til kjernerammen og ved hjelp av Box2D og Bullet - begge ledende biblioteker i deres respektive områder - Polycodes fysikk API er kompetent, gjennomtenkt og robust. Det hadde også vært en glede å bruke, mye mer enn å bruke de underliggende bibliotekene: mens jeg ikke hadde det problemer ved hjelp av Bullet fant jeg at det for brukere som går inn i 3D-fysikkfeltet, er for mye og for sparsomt dokumentert materiale der ute. Med Polycode er fysikk-API rett og du kan nesten bare bruke sunn fornuft mens du arbeider med det, noe som er veldig oppmuntrende for nybegynnere som kan ha problemer med å plukke opp ting i begynnelsen.
  • Dual Lua og C ++ API: Dette er en unik en-Polycode tilbyr deg sin API både fra C ++ og Lua programmeringsspråk. Dette gir deg mulighet til å publisere en-klikk-publisering hvis du skriver ved hjelp av Lua, samt muligheten til å bruke skripting i spillene dine og for eksempel gi nivådesigneren din en enklere måte å kode spilllogikken på innenfor nivåene.

Disse er bare de viktigste funksjonene; Jeg utelatt mange andre, inkludert skjelettanimasjon, Unicode-klar TrueType-skriftgjenoppretting og Polycode IDE. En mer komplett (men likevel ikke uttømmende) liste kan bli funnet på den offisielle nettsiden.


Hvorfor Polycode?

Hvorfor et annet rammeverk? Hvorfor bør du til og med vurdere Polycode, enn si begynne å jobbe med det? Jeg kan ikke overtale deg; Jeg kan bare gi mine egne meninger og erfaringer og la deg være dommeren. Her er noen viktige fordeler med Polycode jeg har funnet i løpet av min tid med det.

  • Polycode er robust. Med en slank, minimal API, den kortfattede måten å avsløre funksjoner på, og en solid redaktør, gjør Polycode meg virkelig behagelig og i kontroll - og jeg er den typen person som liker å ha alt mulig for hånden, klar til å være tilpasset og skreddersydd til mine behov, så det sier noe.
  • Polycode er sterk. Det brede spekteret av funksjoner som er relevante både for små 2D-plattformspillere og sofistikerte 3D-spill med en rik visuell opplevelse, har hjulpet meg med å oppnå det jeg har ønsket å og polere det til perfeksjon, uten å måtte bekymre deg for om spillet mitt ville bli for komplisert for motoren evner.
  • Polycode er enkelt. Den har god dokumentasjon og det er iboende brukervennlig, har aldri, aldri forlatt meg. Selv om det er ung og det ikke er mange ressurser på Internett, var jeg ofte i stand til å bruke bare min intuisjon og sunn fornuft til å avlede hvordan noe fungerer, som jeg har lært, er langt viktigere enn det høres ut som.

Merkbare prosjekter

Selv om Polycode er veldig ung, har det ganske mange prosjekter å stolthet på. De fleste av disse er ikke engang spill, men heller nyskapende bruksområder av våre velkjente gjengivelse, taktile, lyd og fysikk simuleringsteknologi. Her er det noe:

Music Video for "Heaven" av Depeche Mode

I musikkvideoen til sangen "Heaven" av Depeche Mode, regissert av Tim Saccenti, ble Polycode brukt til å lage dekorative fremspring på veggen bak bandet:


Polycode ble brukt til fremspring på veggen i musikkvideoen.

U.S. Open IBM Data Wall

Fem HD-skjermer, administrert av fem datamaskiner, arbeider i synkronisering, alle drevet av Polycode. Denne datavegg visualiserer data fra 2012 U.S. Open, og har 3D-fysikk simulering, berørings tilbakemelding, overlaid 3D-grafikk og nettverk for å holde datamaskinene som viser dataene synkronisert. Utviklet av HUSH. Mer informasjon finner du på prosjektsiden.


Polycode ble brukt til å lage animasjoner, 3D overlegg, simulere 3D fysikk og arbeid med brukerinteraksjon. Bilde med HUSH, brukt under vilkårene for rettferdig bruk.

Space Cruiser

Bygget av Ivan Safrin, samme mastermind bak Polycode-prosjektet, er Space Cruiser et tankespill som er designet spesielt for fremspring i et planetariumkuppel og samarbeidsprosjekt. Det ble premiere i Hayden Planetarium ved American Museum of Natural History. Polycode fullt ut styrker dette interaktive spillet, og gir høy dynamisk rekkevidde 3D-grafikk fra seks forskjellige datamaskiner, alle synkronisert med rammens nettverkskapasiteter. Du kan lese om dette spennende, surrealistiske spillet på prosjektsiden.


Polycode gjør disse fantastiske grafikkene, alt i HDR, med seks forskjellige datamaskiner. Bilde courtesy av Ivan Safrin, brukt under vilkårene for rettferdig bruk.

Hva tidligere kunnskap trenger jeg?

Du kan bruke Polycode både fra C ++, fra Lua, eller fra begge samtidig, koble fra spillets kjernemekanismer (ytelsesintensiv C ++) og dens logikk (skriptet, hot-swappable Lua). Hvis du bare bruker Lua, trenger du ikke kunnskap om det ganske komplekse språket C ++, og du kan starte prototyping med en gang i den store Polycode IDE, en integrert redaktør som følger med rammen.

Når du bestemmer deg for at du vil ha mer kontroll over det indre arbeidet, vil du finne deg selv i behov av C ++. Valget er ditt; Jeg foreslår at du ikke lærer C ++ hvis du ikke allerede vet det (spesielt hvis du ikke har tidligere programmeringskunnskap) med en gang. Lua er mye lettere, nybegynner-vennlig og enklere å lære, så det ville være din beste innsats. På den andre siden, hvis du er en erfaren spillutvikler som ønsker å bruke Polycode for komplekse, gjennomtenkte spill, bruker C ++ og Lua in tandem veien å gå.

For C ++ opplæringsprogrammer kan du henvise til cplusplus.com, stedet der jeg lærte nesten alt jeg vet om språket. Når det gjelder Lua, kan du referere til den uttømmende listen over opplæringsprogrammer på Lua-users.org Tutorial Directory, eller, hvis du foretrekker det, kan du kjøpe bokprogrammeringen i Lua som vil gi deg en solid base og dekke omtrent alt du trenger.

Å ha litt kunnskap om hvordan spill arbeid anbefales, men ikke egentlig påkrevd: du kan finne ut det selv hvis du følger de gode opplæringene på Polycode.org, referert til nedenfor.


Hvordan får jeg det opp og går på min maskin?

Polycode er ung programvare; Faktisk, som skrevet, har den fremdeles ikke nådd versjon 1.0.0. De fleste prosjekter i denne tilstanden gir deg ikke forkompilerte binærbilder, og heller ikke Polycode; Men den offisielle nettsiden gir deg alt du trenger for å kunne få Polycode opp og kjører på maskinen din.

Se på siden på Polycode wiki, velg plattformen din (Polycode fungerer på Windows, Linux og OS X, med Android og iOS-støtte planlagt i fremtiden, så hold deg oppdatert), og du kan komme i gang! Byggeprosessen er enkel; Faktisk, på mitt Arch Linux-system var jeg i stand til å bygge rammen ved hjelp av CMake uten å til og med lese noen av instruksjonene.

Redaktørens notat: LanceJZ har lagt til noen tips for å få Polycode til å jobbe med Visual Studio i kommentarene. Takk, Lance!


Hvordan begynner jeg å lære å jobbe med det?

Vi har skummet gjennom Polycode's fordeler, funksjoner, bemerkelsesverdige prosjekter, byggeprosesser, og nå kan vi få våre hender skitne og begynne å faktisk gjøre noe i det. Polycode-teamet har gjort en fantastisk jobb med å dekke mange nøkkelpunkter en sluttbruker trenger for å begynne å lage flotte spill, visualiseringer og lignende. Polycode-veiledningene finner du på opplæringssiden på den offisielle nettsiden.

Hvis du sitter fast og trenger detaljert dokumentasjon, kan du alltid referere til den offisielle dokumentasjonen, som du kan nå fra "lær" -siden på nettstedet. Hvis du fortsatt er fast, kan du alltid be om hjelp på forumet eller bli med på IRC-chatten på #polycodeirc.freenode.net. Samfunnet er vennlig og hjelpsom, og lederutvikleren selv svarer ofte på spørsmål fra andre, sammen med andre medlemmer av teamet. (Jeg har chattet med Ivan et par ganger på nettet, og han virker som en fin fyr.)


Konklusjon

I denne artikkelen har jeg introdusert en veldig ung ramme med navnet Polycode. Vi har sett hvordan Polycode kan brukes som en spillmotor, så vel som for et bredt spekter av prosjekttyper; Jeg beskrev noen av sine hovedtrekk, sine unike fordeler og kule prosjekter som bruker det, og jeg gjorde mitt beste for å hjelpe deg med å komme inn i læringsprosessen i dette rammeverket. Glad Polykoding!