Python i grafika 3D dla gier wideo Niniejszy dokument zawiera krótką charakterystykę języka programowania Python oraz stworzonych w tym języku narzędzi przeznaczonych do tworzenia grafiki 3D w takich dziedzinach jak: gry komputerowe (w tym również gry online), grafika komputerowa 3D, animacja (filmy). Jest to jedynie wycinek możliwości jakie udostępnia ten język ale z punktu widzenia projektu skoncentrowałem się tutaj tylko na tych zastosowaniach, które mogą być w nim przydatne. Ponieważ Python jest językiem programowania charakteryzującym się tym, że stosunkowo łatwo jest się go nauczyć i łatwo przejść do etapu gdy można go rzeczywiście efektywnie używać jest stosowany przez ludzi pracujących w różnorodnych dziedzinach nauki i przemysłu (bioinformatyka, obliczenia naukowe, modelowanie matematyczne, sztuczna inteligencja, neuroscience, analiza danych, grafika komputerowa, tworzenie aplikacji internetowych, systemy informatyczne wspierające zarządzanie przedsiębiorstwami). Dokument ten jest podzielony na dwie części. Pierwsza zawiera więc krótki przegląd projektów, które są rozwijane w języku Python. Wiele informacji szczegółowych można znaleźć w Internecie i nie ma sensu tutaj ich wszystkich przytaczać. Ta część ma na celu raczej pokazanie różnorodności zastosowań tego języka i pokazanie Czytelnikowi, że jest to język, którego warto się uczyć. Poza wielością zastosowań zarówno w sferze przemysłu jak i nauki język ten jest bardzo dobrym wstępem do nauki programowania w ogóle. Umożliwia zapoznanie się w bardzo intuicyjny sposób z różnymi paradygmatami tworzenia oprogramowania (programowanie obiektowe, proceduralne, funkcjonalne). Bardzo ważna jest możliwość integracji z innymi językami programowania: w szczególności C++ i Java (oraz środowiskiem .NET) dzięki czemu można łatwo pisać programy używające np. klas napisanych w tych językach. [1] „Structure and Interpretation of Computer Programs” (słynny kurs programowania na MIT, książka o tym samym tytule) po wielu latach zajęć prowadzonych w języku LISP (jako głównego języka sztucznej inteligencji) przeszedł w ostatnim czasie na język Python (decyzja wzbudzała dyskusje lecz jest to fakt). [2] Sztuczna inteligencja: Peter Norvig (Director of Research Google), jeden z autorów książki „Artificial Intelligence: A Modern Approach”;. Google jest jedną z firm, która związana jest z tym językiem. [3] Hacker culture: tekst Erica S. Raymonda „Why Python?”. Druga część niniejszego tekstu zawiera przegląd trzech najbardziej popularnych obecnie narzędzi przeznaczonych do tworzenia szeroko rozumianej grafiki 3D. Spośród wielu dostępnych w Internecie: Panda 3D, Blender 3D, VPython, PyGame, PySoy, Soya 3D i inne, poniżej zamieściłem jedynie linki do wybranych: Blender 3D, Panda 3D, VPython – dwa pierwsze są całkowicie profesjonalnymi narzędziami wykorzystywanymi w dziedzinie grafiki i animacji komputerowej, ostatni natomiast jest projektem edukacyjnym i jako taki umożliwia bardzo łatwe zapoznanie się z programowaniem w 3D. Jeżeli chodzi o instalację oprogramowania to chętnie służę pomocą. O ile sama instalacja jest banalnie prosta to wybór tego co najlepiej zainstalować może być trudny dla osób, które nie miały kontaktu z tym językiem. Osobom zainteresowanym podam linki do odpowiednich stron z oprogramowaniem, dodatkowymi bibliotekami oraz dostępnymi środowiskami programistycznymi. Praca na rynku IT. Poniższa strona obrazuje zapotrzebowanie na programistów Python w branży IT: http://www.itjobswatch.co.uk/jobs/uk/python%20programmer.do I. PROJEKTY UŻYWAJĄCE JĘZYKA PYTHON Największy przegląd projektów używających języka Python można znaleźć na oficjalnej stronie: http://www.python.org/about/success/ gdzie podano je uporządkowane wg różnych zastosowań. Z najbardziej znanych można wymienić takie jak: Django, Zope, Plone – Web Applications, Web Frameworks ERP5 – Management Information System EVE Online ‐ massive multiplayer game Firaxis Games – Civilization IV TAPtools® ‐ Python in Air Traffic Control II. GRAFIKA 3D Ogólnie o tworzeniu gier 3D w Pythonie i … przykłady na zachętę PythonGames (z głównej strony wiki Pythona: wiki.python.org): http://wiki.python.org/moin/PythonGames Python 3D Software Collection: grafika 3D w Pythonie (przegląd projektów): http://www.vrplumber.com/py3d.py Artykuł o głównych projektach związanych z tworzeniem 3D w Pythonie: „3D game development contest will attract Python game developers” http://www.indicthreads.com/1148/3d‐game‐development‐contest‐will‐attract‐python‐game‐developers/ Zastosowanie przykładowe: z Pythona korzystają m.in. takie gry jak: Civilization 4: http://www.2kgames.com/civ4/home.htm Battlefield 2: Is a strategy and first person shooter game that uses python for logic and server controls EVE Online ‐ multiplayer: http://play.eveonline.com/en/screenshots.aspx Panda 3D Disney: http://disney.go.com/disneycareers/internships/walt_disney_imagineering.html, Carnegie Mellon: http://www.etc.cmu.edu/ Panda3d Full featured open source 3d engine specifically for python but written in c++. Features: performance, multi‐platform support, scene graph, export/import pipeline, 3D Audio, collision detection, physics, unusual I/O devices, basic AI library, browser plugin, animations, networking ... and many more. Panda3D is a free 3D engine designed to reduce the time and cost of game development. It has a short learning curve, a straightforward API, and high resilience to user error. Panda3D is written in C++ and is tightly integrated with the python scripting language. It was originally developed by Disney Imagineering and was released as free software in 2002. Panda3D is actively being developed by Disney Imagineering and Carnegie‐ Mellon’s Entertainment Technology Center. Official web page: http://www.panda3d.org/ Manuals (cheat sheets): http://www.panda3d.org/wiki/index.php/Cheat_Sheets (source at Carnegie Mellon Entertainment Technology Center: http://www.p3dp.com/doku.php?id=dotherwise:start) Panda 3D Examples ‐‐ games: Second Antarean War: http://aff2aw.com/index.html Pirates of the Caribbean online: http://piratesonline.go.com/welcome Ciekawe projekty na bazie Panda 3D: CODE3D: http://www.code3d.com/default.aspx ‐ tworzenie wirtualnych środowisk, map, planów, które można następnie udostępniać w sieci (http://www.panda3d.org/showss.php?shot=ssg‐code3d/code3D03 ‐ Code3D is a toolset that is available to emergency responders for creating their own 3D virtual training scenarios. Code3D is realistic and engaging. Users can create their own training environment; add hazards and photos that can change over time. Users can then use the playback function to walk through the 3D environment and scenario in real‐time. It utilizes Panda3D as the core 3D rendering and event management engine and wxPython for the 2D user interface.) Blender 3D Blender3D is an open source game engine, modeler, animator and 3D renderer under the GNU GPL license. Uses Python as scripting language. Blender is a 3d game engine that uses python to make 3d games. Official Blender Page: http://www.blender.org/ Blender Manual: http://wiki.blender.org/index.php/Doc:Manual The Official Blender Gamekit: http://news.hiperia3d.com/2009/09/blender‐gamekit‐book‐make‐3d‐games‐with.html Tworzenie gier w Blender 3D i Python ‐‐ BGE: Blender Game Engine http://troman.pl/ Podstawy Pythona w BGE: „TROMAN – tworzenie gier”: http://troman.pl/download/tutoriale/podstawy‐pythona‐bge.zip „Wirtualne spacery”: Nature: http://troman.pl/?p=387 Ruinas: http://troman.pl/?p=480 Stucco: http://troman.pl/?p=800 Przykładowe gry: Burning Rubber: http://troman.pl/?p=330 Polskie forum nt tworzenia gier w BGE: (http://forum.blender3d.pl/viewtopic.php?t=4489&sid=138f6e965def177ad989c1b371d9b542) Blender 3D Tutorials: http://www.tutorialsforblender3d.com/ How to write scripts in Python for Blender 3D: http://jmsoler.free.fr/didacticiel/blender/tutor/python_script00_en.htm http://wiki.blender.org/index.php/Extensions:Py/Scripts Blender 3D – Plugins: Przykładowe pluginy do tworzenia animowanych postaci: http://www.jpbouza.com.ar/ESP2/descargas/blenrig‐ 3/id/en Blender 3D Books: Tony Mullen, Mastering Blender (http://www.amazon.com/Mastering‐Blender‐Tony‐ Mullen/dp/0470407417/ref=pd_sim_b_1) Tony Mullen, Bounce, Tumble, and Splash!: Simulating the Physical World with Blender 3D (http://www.amazon.com/Bounce‐Tumble‐Splash‐Simulating‐Physical/dp/0470192801/ref=cm_cr_pr_sims_t) VPython Oficjalna strona: http://www.vpython.org/ Króciutko o projekcie (z oficjalnej strony Pythona): http://wiki.python.org/moin/VPython#preview 3D programming with Vpython: http://linuxgazette.net/144/john.html Visual Reference: http://www.vpython.org/webdoc/visual/index.html