Polycode leren

Polycode is een gratis open-source (gelicentieerd onder de MIT-licentie) en platformonafhankelijk "raamwerk voor creatieve codering". Deze term is zelden te horen in de game-ontwikkelingsgemeenschap, maar wat het eigenlijk betekent, is simpel: Polycode biedt je tools om je creativiteit via code uit te drukken, en hoewel het volledig gekwalificeerd is om de "game-engine"moniker, het geeft de voorkeur aan niet. De reden is simpel: Polycode kan (en wordt) vaak gebruikt voor projecten die meer omvatten dan interactieve spellen, zoals visualisaties voor entertainment of voor wetenschappelijke doeleinden.

Ik heb Polycode gebruikt voor voornamelijk kleine games, maar ook voor een buitengewone gebruikersinterface voor zoomen en had evenveel succes bij het ontwikkelen van alle projecten. Laten we eens kijken naar wat Polycode u te bieden heeft en hopelijk u interesseren om te leren werken met dit prachtige kader.


Wat levert Polycode op?

Omdat dit geen promotiestuk is voor het framework, zal ik proberen belangrijke functies te benadrukken die interessant kunnen zijn voor gameontwikkelaars zonder in te gaan op overdreven details.

  • 2D- en 3D-afbeeldingen: Het Polycode-framework biedt u eenvoudige, effectief ontworpen systemen voor het tekenen van 2D- en 3D-afbeeldingen. Dat gaat niet ten koste van de snelheid en het levert geen functies op die gevorderde gebruikers nodig hebben - een prestatie die veel van de populaire rendering-engines van vandaag niet kunnen uitvoeren. In eerste instantie vermoedde ik dat Polycode me alleen de basis 3D grafische mogelijkheden zou geven, maar ik ben van gedachten veranderd toen ik zag hoe de pijplijn werd ontworpen; het is zo aanpasbaar als het maar kan, en het maakt de implementatie mogelijk van methoden zoals light pre-pass of uitgestelde shading zonder de kadercode te veranderen.
  • Invoer afhandeling: Met Polycode kunt u omgaan met muis, toetsenbord, joystick en aanraakinvoer via het uniforme systeem voor gebeurtenisafhandeling. Deze functie is uiteraard essentieel voor alles dat zichzelf een game-engine noemt.
  • Ondersteuning voor netwerken: De netwerk-API ziet er niet al te ingewikkeld uit en biedt ook geen opoffering aan functies. Ik heb het niet veel persoonlijk gebruikt, maar tot nu toe heeft het nooit problemen voor mij opgeleverd en ik weet dat het veelvuldig wordt gebruikt door de meest geprezen projecten die met behulp van het platform zijn ontwikkeld..
  • audio: Met Polycode kunt u 2D- en 3D-positionele audio afspelen, compleet met functies zoals streaming (voor lange audiobestanden zoals muziektracks). De functieset hier is niet spectaculair, maar het zou genoeg moeten zijn voor de behoeften van de meeste indie-spelontwikkelaars die er zijn.
  • 2D- en 3D-fysica: Gerealiseerd via plug-ins naar het kernraamwerk en met behulp van Box2D en Bullet, beide toonaangevende bibliotheken in hun respectieve gebieden, is de Physics API van Polycode competent, weldoordacht en robuust. Het was ook een genot om te gebruiken, veel meer dan de onderliggende bibliotheken te gebruiken: terwijl ik dat niet had problemen met behulp van Bullet vond ik dat voor gebruikers die het 3D-fysica-veld betreden, er te veel en te dun gedocumenteerd materiaal is. Met Polycode is de physics API eenvoudig en kun je bijna gewoon je gezond verstand gebruiken terwijl je ermee omgaat, wat zeer bemoedigend is voor beginners die in het begin moeite hebben om dingen op te pikken..
  • Dual Lua en C ++ API: Dit is een unieke one-Polycode biedt u zijn API zowel uit C ++ en Lua programmeertalen. Hiermee kunt u publiceren met één muisklik als u met Lua schrijft, evenals de mogelijkheid om scripting in uw games te gebruiken en bijvoorbeeld uw level designer een gemakkelijkere manier bieden om spellogica in hun levels te coderen.

Dit zijn slechts de belangrijkste kenmerken; Ik heb veel andere dingen weggelaten, waaronder skeletanimatie, Unicode-ready TrueType-lettertypen renderen en Polycode IDE. Een vollediger (maar nog steeds niet uitputtende) lijst is te vinden op de officiële website.


Waarom Polycode?

Waarom een ​​ander kader? Waarom zou u Polycode overwegen, laat staan ​​dat u ermee gaat werken? Ik kan je niet overhalen; Ik kan alleen mijn eigen mening en ervaringen geven en je de rechter laten zijn. Hier zijn enkele belangrijke voordelen van Polycode die ik heb gevonden tijdens mijn tijd ermee.

  • Polycode is robuust. Met een gestroomlijnde, minimale API, de beknopte manier om functies te onthullen en een solide editor, laat Polycode me echt comfortabel en in controle voelen - en ik ben het soort persoon dat graag alles binnen handbereik heeft, klaar om te worden aangepast en afgestemd op mijn behoeften, dus dat zegt iets.
  • Polycode is sterk. Het brede scala aan functies die relevant zijn voor zowel kleine 2D-platformspelers als geavanceerde 3D-spellen met een rijke visuele ervaring heeft me geholpen om te bereiken wat ik wilde en het perfectioneren, zonder me zorgen te hoeven maken of mijn spel te complex zou worden voor de motor. mogelijkheden.
  • Polycode is eenvoudig. Het heeft geweldige documentatie en het inherente gebruiksgemak heeft me nog nooit verloren gelaten. Hoewel het jong is en er zijn niet veel bronnen op het internet, was ik vaak in staat om alleen mijn intuïtie en gezond verstand te gebruiken om af te leiden hoe iets werkt, wat ik heb geleerd is veel belangrijker dan het klinkt als.

Opmerkelijke projecten

Hoewel Polycode erg jong is, heeft het nogal wat projecten om trots op te zijn. De meeste hiervan zijn niet eens spellen, maar eerder innovatief gebruik van onze vertrouwde renderen, tactiele, audio en fysica simulatietechnieken. Hier zijn een paar:

Muziekvideo voor "Heaven" door Depeche Mode

In de videoclip voor het nummer "Heaven" van Depeche Mode, geregisseerd door Tim Saccenti, werd Polycode gebruikt om decoratieve projecties op de muur achter de band te maken:


Polycode is gebruikt voor projecties aan de muur in de videoclip.

VS Open IBM Data Wall

Vijf HD-schermen, beheerd door vijf computers, werken synchroon, allemaal aangedreven door Polycode. Deze gegevensmuur visualiseert gegevens van de 2012 Open van de Verenigde Staten en biedt 3D-simulatie van fysica, aanraakfeedback, overlay 3D-afbeeldingen en netwerken om te zorgen dat de computers de gegevens synchroon weergeven. Ontwikkeld door HUSH. Meer info is te vinden op de projectpagina.


Polycode is gebruikt voor het weergeven van animaties, 3D-overlays, het simuleren van 3D-fysica en het werken met gebruikersinteractie. Afbeelding met dank aan HUSH, gebruikt onder de voorwaarden van redelijk gebruik.

Space Cruiser

Space Cruiser, gebouwd door Ivan Safrin, hetzelfde meesterbrein achter het Polycode-project zelf, is een verbazingwekkend spel dat speciaal is ontworpen voor projecties in een planetarium-koepel en een gezamenlijk spel. Het ging in première in het Hayden Planetarium in het American Museum of Natural History. Polycode drijft dit interactieve spel volledig aan, waardoor 3D-afbeeldingen met een hoog dynamisch bereik van zes verschillende computers worden weergegeven, allemaal gesynchroniseerd met behulp van de netwerkmogelijkheden van het framework. Je kunt over dit spannende, surrealistische spel lezen op de projectpagina.


Polycode maakt deze geweldige graphics, allemaal in HDR, met behulp van zes verschillende computers. Afbeelding met dank aan Ivan Safrin, gebruikt onder de voorwaarden van redelijk gebruik.

Welke eerdere kennis heb ik nodig?

Je kunt Polycode zowel van C ++, van Lua of van allebei tegelijkertijd gebruiken, waarbij je de kernmechanismen van je spel (prestatie-intensieve C ++) en de logica (gescripte, hot-swappable Lua) ontkoppelt. Als je alleen Lua gebruikt, hoef je geen kennis te hebben van de vrij complexe taal C ++, en kun je meteen prototypen in de geweldige Polycode IDE, een geïntegreerde editor die wordt meegeleverd met het framework.

Als je eenmaal hebt besloten dat je meer controle wilt hebben over de innerlijke werking, zul je merken dat je C ++ nodig hebt. De keuze is aan jou; Ik stel voor dat je C ++ niet leert als je het nog niet weet (vooral als je geen voorafgaande programmeerkennis hebt). Lua is veel lichter, beginnersvriendelijk en gemakkelijker te leren, dus dat zou je beste gok zijn. Aan de andere kant, als je een ervaren game-ontwikkelaar bent die Polycode wil gebruiken voor complexe, doordachte games, is het gebruik van C ++ en Lua de juiste keuze.

Voor C ++ -lessen kunt u verwijzen naar cplusplus.com, de plaats waar ik bijna alles heb geleerd wat ik over de taal weet. Wat Lua betreft, kun je de uitgebreide lijst met tutorials raadplegen op de lua-users.org Tutorial Directory, of, als je dat liever hebt, je het boek Programming in Lua kopen, dat je een oerdegelijke basis geeft en ongeveer alles wat je nodig hebt.

Kennis hebben van hoe games werken, wordt aanbevolen, maar niet echt vereist: je kunt het zelf uitvogelen als je de geweldige tutorials op Polycode.org volgt, waarnaar hieronder wordt verwezen.


Hoe krijg ik het op mijn machine?

Polycode is jonge software; in feite heeft het nog steeds niet versie 1.0.0 bereikt. De meeste projecten in deze status geven u geen vooraf gecompileerde binaire bestanden en evenmin Polycode; de officiële website biedt u echter alles wat nodig is om Polycode succesvol op uw machine te krijgen.

Raadpleeg de pagina op de Polycode-wiki, kies uw platform (Polycode werkt op Windows, Linux en OS X, met Android- en iOS-ondersteuning gepland in de toekomst, dus houd het in de gaten) en u kunt aan de slag! Het bouwproces is eenvoudig; in feite kon ik op mijn Arch Linux-systeem het framework bouwen met behulp van CMake zonder zelfs maar een van de instructies te lezen.

Opmerking van de uitgever: LanceJZ heeft enkele tips toegevoegd om Polycode in de opmerkingen met Visual Studio te laten werken. Bedankt, Lance!


Hoe begin ik eraan te leren ermee te werken?

We hebben de voordelen, functies, opmerkelijke projecten, het bouwproces van Polycode doorgenomen en nu kunnen we onze handen vies maken en beginnen er iets in te doen. Het Polycode-team heeft fantastisch werk geleverd door een groot aantal belangrijke punten te behandelen die een eindgebruiker nodig heeft om prachtige games, visualisaties en dergelijke te maken. De zelfstudies van Polycode zijn te vinden op de zelfstudiepagina op de officiële website.

Als je vastloopt en gedetailleerde documentatie nodig hebt, kun je altijd de officiële documentatie raadplegen die je kunt vinden op de "learn" -pagina van de website. Als je nog steeds vastzit, kun je altijd om hulp vragen op de forums of lid worden van de IRC-chat #polycode op irc.freenode.net. De community is vriendelijk en behulpzaam, en de hoofdontwikkelaar zelf beantwoordt vaak vragen van anderen, samen met andere leden van het team. (Ik heb een paar keer online met Ivan gesproken en hij lijkt me een geweldige kerel.)


Conclusie

In dit artikel introduceer ik een heel jong raamwerk met de naam Polycode. We hebben gezien hoe Polycode zowel als game-engine als voor een breed scala aan projecttypen kan worden gebruikt; Ik beschreef enkele van zijn belangrijkste functies, zijn unieke voordelen en coole projecten die het gebruiken, en ik heb mijn best gedaan om je te helpen het leerproces van dit raamwerk te leren kennen. Blije Polycoding!