Hur man läser polycode

Polycode är en fri, öppen källkod (licensierad enligt MIT-licensen) och plattformen "Framework for Creative Coding". Denna term hörs sällan inom spelutvecklingsgemenskapen, men vad det i grunden betyder är enkelt: Polycode ger dig verktyg för att uttrycka din kreativitet genom kod och även om det är fullt kvalificerat att bära "spelmotor"moniker, det föredrar inte. Orsaken är enkel: Polycode kan (och ofta används) för projekt som omfattar mer än interaktiva spel, såsom visualiseringar som används för underhållning eller vetenskapliga ändamål.

Jag har använt Polycode för mestadels små spel, men också för ett vanligt användargränssnitt och hade lika stor framgång för att utveckla alla projekt. Låt oss ta en titt på vad Polycode kan erbjuda dig, och förhoppningsvis få dig intresserad av att lära dig att arbeta med denna underbara ram.


Vad tillhandahåller Polycode?

Eftersom det här inte är en kampanj för ramverket ska jag försöka betona viktiga funktioner som kan vara av intresse för spelutvecklare utan att gå in i överdriven detalj.

  • 2D och 3D-grafik: Polycode Framework ger dig enkla, effektivt utformade system för att rita 2D- och 3D-grafik. Det gör det inte på bekostnad av fart, och det offrar inte funktioner som avancerade användare behöver - en prestation som många av dagens populära återgivningsmotorer misslyckas med att dra av. Först misstänkte jag att Polycode skulle ge mig bara grundläggande 3D-grafikfunktioner, men jag ändrade mig när jag såg hur rörledningen designades. Det är så anpassningsbart som det blir, och det möjliggör implementering av metoder som ljusförlängning eller uppskjuten skuggning utan att någonsin ändra ramkoden.
  • Inmatningshantering: Polycode tillåter dig att hantera mus, tangentbord, joystick och pekinmatning via sitt enhetliga händelseshanteringssystem. Denna funktion är självklart viktigt för allt som kommer nära att kalla sig en spelmotor.
  • Nätverksstöd: API-nätverket ser inte ut så komplicerat och offrar inte heller funktioner. Jag har inte använt det mycket personligt, men hittills har det aldrig presenterat några problem för mig, och jag vet att den används i stor utsträckning av de mest välrenommerade projekt som utvecklats med plattformen.
  • Audio: Med Polycode kan du spela 2D och 3D positionellt ljud, komplett med funktioner som streaming (för långa ljudfiler som musikspår). Funktionen här är inte spektakulär, men det borde vara tillräckligt för behoven hos de flesta indie spelutvecklare där ute.
  • 2D och 3D fysik: Realiseras via plugins till kärnramen och använder Box2D och Bullet, båda ledande biblioteken inom sina respektive områden. Polycodes fysik API är kompetent, genomtänkt och robust. Det hade också varit ett nöje att använda, mycket mer än att använda de underliggande biblioteken: medan jag inte hade det problem med hjälp av Bullet, fann jag att det för användare som går in i 3D-fysikfältet finns för mycket och för sparsamt dokumenterat material där ute. Med Polycode är fysik API enkelt och du kan nästan bara använda din sunt förnuft medan du hanterar det, vilket är väldigt uppmuntrande för nybörjare som kan ha problem med att plocka upp saker i början.
  • Dual Lua och C ++ API: Detta är en unik en-Polycode erbjuder dig dess API både från C ++ och Lua programmeringsspråk. Detta låter det erbjuda dig ett klickutgivning om du skriver med Lua, samt möjligheten att använda skript i dina spel och till exempel ge din designer ett enklare sätt att koda spellogiken inuti sina nivåer.

Dessa är bara nyckelfunktionerna; Jag slog ut många andra, inklusive skelettanimering, Unicode-redo TrueType-teckensnitt och Polycode IDE. En mer fullständig (men fortfarande inte uttömmande) lista finns på den officiella hemsidan.


Varför Polycode?

Varför en annan ram? Varför ska du ens överväga Polycode, än mindre börja jobba med det? Jag kan inte övertyga dig Jag kan bara ge mina egna åsikter och erfarenheter och låta dig vara domaren. Här är några viktiga fördelar med Polycode jag har hittat under min tid.

  • Polycode är robust. Med ett snyggt, minimalt API, det bekväma sättet att exponera funktioner, och en solid redaktör, gör Polycode mig verkligen bekvämt och kontrollerat - och jag är den typ av person som gillar att ha allt möjligt till hands, redo att vara skräddarsydd och skräddarsydd för mina behov, så det säger något.
  • Polycode är stark. Det brett utbud av funktioner som är relevanta både för små 2D-plattformar och sofistikerade 3D-spel med en rik visuell upplevelse har hjälpt mig att uppnå vad jag har velat och polera till perfektion, utan att behöva oroa mig för att mitt spel skulle bli för komplicerat för motorns Förmågor.
  • Polycode är enkelt. Den har stor dokumentation och dess inneboende användarvänlighet har aldrig någonsin lämnat mig förlorad. Även om det är ungt och det inte finns många resurser på Internet, kunde jag ofta bara använda min intuition och sunt förnuft för att härleda hur något fungerar, vilket jag har lärt mig är betydligt viktigare än det låter som.

Anmärkningsvärda projekt

Även om Polycode är väldigt ung, har det många projekt att stolta på. De flesta av dessa är inte ens spel, utan ganska innovativa användningsområden av vår kända teknik för simulering, taktil, ljud och fysik. Här är några:

Musikvideo för "Heaven" av Depeche Mode

I musikvideot för låten "Heaven" av Depeche Mode, regisserad av Tim Saccenti, användes Polycode för att göra dekorativa projektioner på väggen bakom bandet:


Polycode användes för projektioner på väggen i musikvideon.

U.S. Open IBM Data Wall

Fem HD-skärmar, som hanteras av fem datorer, arbetar i synkronisering, alla drivna av Polycode. Denna datavägg visualiserar data från 2012 U.S. Open, och har 3D-fysik simulering, touch feedback, överlagrad 3D-grafik och nätverk för att hålla datorerna som visar data i synkronisering. Utvecklad av HUSH. Mer information finns på projektsidan.


Polycode användes för att göra animeringar, 3D överlagringar, simulera 3D-fysik och arbeta med användarinteraktion. Bild med tillstånd av HUSH, används enligt villkoren för rättvis användning.

Space Cruiser

Byggd av Ivan Safrin, samma mastermind bakom Polycode-projektet i sig, är Space Cruiser ett tänkande spel som är utformat speciellt för projektioner i en planetariumkupol och samspel. Det var premiär i Hayden Planetarium på American Museum of Natural History. Polycode fullt ut driver detta interaktiva spel, vilket ger hög dynamiskt intervall 3D-grafik från sex olika datorer, alla synkroniseras med rammens nätverksfunktioner. Du kan läsa om detta spännande, surrealistiska spel på sin projektsida.


Polycode gör dessa fantastiska bilder, allt i HDR, med sex olika datorer. Bild med tillstånd av Ivan Safrin, används enligt villkoren för rättvis användning.

Vilken tidigare kunskap behöver jag??

Du kan använda Polycode både från C ++, från Lua eller från båda samtidigt, koppla bort spelets kärnmekanismer (prestationsintensiva C ++) och dess logik (skriptad, hot-swappable Lua). Om du bara använder Lua behöver du inte kännedom om det ganska komplicerade språket C ++, och du kan börja prototypera direkt i den stora Polycode IDE, en integrerad redaktör som följer med ramverket.

När du bestämmer dig för att du vill ha mer kontroll över de inre arbeten, hittar du dig själv i behov av C ++. Valet är ditt; Jag föreslår att du inte lär dig C ++ om du inte redan vet det (speciellt om du inte har tidigare programmeringskunskaper) direkt. Lua är mycket lättare, nybörjevänlig och lättare att lära sig, så det skulle vara din bästa satsning. Å andra sidan, om du är en erfaren spelutvecklare som vill använda Polycode för komplexa, genomtänkta spel, använder du C ++ och Lua i tandem är vägen att gå.

För C ++-handledning kan du hänvisa till cplusplus.com, den plats där jag lärde mig nästan allt jag vet om språket. När det gäller Lua kan du se den uttömmande listan över handledning på Lua-users.org Handledningskatalog eller, om du föredrar, kan du köpa boken Programmering i Lua, som ger dig en fast bas och täcker bara om allt du behöver.

Har lite kunskap om hur spelarbete rekommenderas men inte egentligen krävs: du kan räkna ut det själv om du följer de stora handledningarna på Polycode.org, som anges nedan.


Hur tar jag upp det och körs på min maskin?

Polycode är ung programvara; Faktum är att det fortfarande inte har nått version 1.0.0 som skrivande. De flesta projekt i detta tillstånd ger dig inte förkompilerade binärer, och inte heller Polycode; Den officiella hemsidan ger dig emellertid allt som behövs för att framgångsrikt få Polycode upp och köra på din maskin.

Se sidan på Polycode wiki, välj din plattform (Polycode fungerar på Windows, Linux och OS X, med Android och iOS-stöd som planeras i framtiden, så håll dig stillad) och du kan komma igång! Byggprocessen är enkel; Faktum är att jag på min Arch Linux-system kunde bygga ramverket med CMake utan att ens läsa någon av instruktionerna.

Redaktörens anteckning: LanceJZ har lagt till några tips för att få Polycode att arbeta med Visual Studio i kommentarerna. Tack, Lance!


Hur börjar jag lära mig att arbeta med det?

Vi har skumrat genom Polykods fördelar, funktioner, anmärkningsvärda projekt, byggprocessen och nu kan vi få våra händer smutsiga och börja faktiskt göra någonting i den. Polycode-teamet har gjort ett fantastiskt jobb för att täcka många viktiga punkter som en slutanvändare behöver för att skapa snygga spel, visualiseringar och liknande. Polycode tutorials finns på handledningssidan på den officiella hemsidan.

Om du fastnar och behöver detaljerad dokumentation kan du alltid referera till den officiella dokumentationen, som du kan nå från sidan "Lär dig" på webbplatsen. Om du fortfarande är fast kan du alltid be om hjälp på forumet eller gå med i IRC-chatten på #polycodeirc.freenode.net. Gemenskapen är vänlig och hjälpsam, och huvudutvecklaren själv svarar ofta frågor från andra, tillsammans med andra medlemmar i laget. (Jag har chattat med Ivan ett par gånger på nätet, och han verkar som en bra kille.)


Slutsats

I denna artikel har jag presenterat en mycket ung ram som heter Polycode. Vi har sett hur Polycode kan användas som en spelmotor såväl som för en mängd olika projekttyper; Jag beskrev några av dess nyckelfunktioner, dess unika fördelar och coola projekt som använder det, och jag gjorde mitt bästa för att hjälpa dig att komma in i lärandeprocessen av denna ram. Glad Polykodning!