Skocz do zawartości

Too Many Troopers 2 i Bricks Knock Off


Jason

Polecane posty

Zaczęło się od poszukiwań silnika graficznego darmowego i prostego w obsłudze, padło na Pandę 3D, bo najszybciej udało mi się python'owe hello world odpalić :D Ogre jakoś odrzucało mnie - robiłem zgodnie z tutorialami pierwszy program i musiałem się nieźle naszukać nagłówka klasy SimpleApplication, czy jakoś tak, żeby do projektu go include'ować. W Python'ie też łatwiej mi pisać wieloplatformowe aplikacje, bo odpada proces kompilacji i linkowania tych wszystkich libów itp. A wydajność aż tak nie kuleje, jak się korzysta z funkcji wbudowanych i z bibliotek napisanych w C/C++ - silnik fizyczny większość obliczeń wykonuje, ja mu tylko podaję wymiary obiektu i siły wpływające na obiekt, czyli i tak większa część aplikacji jest napisana w C/C++, a gra nie jest jakąś mega zasobożerną produkcją, skoro nawet powstają we flash'u takie gry jak Bricks Knock Off (flashowa nazywa się Blosics - o czym wspomniałem na stronie mojego projektu) :)

Oprócz gier jeszcze w ramach projektu z nowoczesnych technologii programistycznych nauczyłem się korzystać z Google App Engine w języku Python i na nim działa moja strona - taki projekt zaproponowałem prowadzącemu i wszystko z diagramami MVC jest zrobione.

Czyli ogólnie, co mnie zachęciło do Python'a:

- prostota (łatwiej się programuje, bardziej zrozumiały kod, łatwa obsługa struktur dynamicznych itp.)

- pełna obiektowość języka

- uniwersalność i przenośność kodu

- wrappery do wielu bibliotek

Nie żebym jakoś potępiał C/C++, bo bez tych języków Python i szybkie biblioteki do niego by nie istniały ;)

Link do komentarza
Udostępnij na innych stronach

Blind - skorzystam z cennej rady ;) Bo w niektórych dystrybucjach Linuksa może nie być pewnych (nie wiem jak może być z pygame, ale pyopengl i pysqlite pewnie wszystkie mają :) ). Dla Winshita jest Python Portable.... ale cóż, spróbuję z obecnie zainstalowanych pakietów w Linuksie stworzyć właśnie takiego Python'a Portable z pakietami pod moją grę ;) Albo zobaczę jakie istnieją rozwiązania w tym zakresie, zobaczę najpierw to http://pypi.python.org/pypi/plipy/0.0.1

 

 

edit:

Albo zorientuję się jak tam się sprawuje cx_freeze

Link do komentarza
Udostępnij na innych stronach

pod Ubuntu 10.04 LTS nie startuje

CYTATja@ja-desktop:~/gry/Bricks_Knock_Off$ ./main.py

Traceback (most recent call last):

File "./main.py", line 29, in

from Box2DLinux import *

File "/home/ja/gry/Bricks_Knock_Off/Box2DLinux/__init__.py", line 21, in

from .Box2D import *

File "/home/ja/gry/Bricks_Knock_Off/Box2DLinux/Box2D.py", line 28, in

_Box2D = swig_import_helper()

File "/home/ja/gry/Bricks_Knock_Off/Box2DLinux/Box2D.py", line 24, in swig_import_helper

_mod = imp.load_module('_Box2D', fp, pathname, description)

ImportError: /home/ja/gry/Bricks_Knock_Off/Box2DLinux/_Box2D.so: wrong ELF class: ELFCLASS32

 

ja@ja-desktop:~/gry/Too_Many_Troopers2$ ./main.py

Traceback (most recent call last):

File "./main.py", line 8, in

import ode

ImportError: No module named ode

 

 

edit:

oczywiście mam pygame, pyopengl i pysqlite

chmody nadane

Link do komentarza
Udostępnij na innych stronach

Dzięki za info. Ja tą bibliotekę (box2d) do BricksKnockOff kompilowałem z SVN pod Ubuntu 10.10, widocznie to nie wystarczy (jak czytałem opis wspomnianego plipy do tworzenia przenośnego środowiska python'a to tam pisało, że on wywala ze skompilowanych bibliotek różne rzeczy, które mogą powodować błędy importu), jak zrobię wersję portable z cx_freeze, albo czymś innym to przetestujesz mam nadzieję ;) I tak na razie nic nie straciłeś, bo gra ma 3 poziomy (na razie gotowa jest główna część gry, teraz czas na levele i dodatkowe features'y dotyczące fizyki - dodatkowe obiekty itp.).

 

Jeśli chodzi o Too Many Troopers 2 to używałem tam pyode z repozytorium.

 

W obydwu projektach natomiast używałem pygame i pyopengl, w BKO używałem dodatkowo sqlite3, a Box2D dołączyłem w dwóch wersjach - dla Win i dla Lin. Wiem, że to odstrasza jak się chce tylko włączyć grę... więc zrobienie wersji przenośnej również dla Linuksa to bardzo dobry pomysł :) Dla Win wersja z Python'em Portable była testowana na XP 32bit i na Win7 64 bit, wszystko śmiga. Heh... okazało się, że wsparcie aplikacji przez Win jest bardziej dopracowane :D Jaki wstyd :unsure:

 

edit:

A masz pyode? Too Many Troopers 2 powinno Ci ruszyć. A w BKO jak już wspomniałem, Box2D dołączony skompilowany pod Linuksa coś Ci się rzuca, ale to naprawię, mam nadzieję ;)

Link do komentarza
Udostępnij na innych stronach

oj pyode nie miałem teraz Too Many Troopers 2 chodzi i to całkiem ładnie

tym bardziej że mam tylko otwarte sterowniki do mojego archaicznego radeona :D

;) Dodam, że pyode jest mniej problematycznym silnikiem fizycznym, Box2D ma bardzo zmienną implementację. Przykładowo raz mamy klasę b2World, a w niej metodę CreateBody, która zwraca obiekt ciała i możemy na tak utworzonym obiekcie zastosować metodę setStatic, a w innej implementacji mamy metodę CreateBody, które domyślnie tworzy ciało statyczne i mamy też CreateDynamicBody dla ciał na które oddziałuje fizyka, jest też zmiana nazw klas, zamiast PolygonDef, PolygonShape itp. Jak robiłem paczkę pod Win to z tym miałem problem, bo nie mogłem znaleźć paczki Box2D odpowiadającej paczce z repozytorium Ubuntu, więc pod Linuksem z svn skompilowałem wersję, którą znalazłem skompilowaną pod Win. Jak mi się uda poprawić ten błąd z Box 2D o którym napisałeś to może przepiszę fizykę Too Many Troopers na Box2D (bo może w nim uda mi się zrobić dokładniejszą kolizję (w ODE miałem trochę problemów z implementacją ograniczenia poruszania myszą w obrębie okręgu, więc myszą nie ustawiam pędu miecza, tylko jego pozycję, co wpływa negatywnie na wykrywanie kolizji, Box2D ma różne joint'y, które mogą mi to zadanie ułatwić, nawet widzę w przykładach odpowiednie użycie jointów - rope joint test :)

 

edit:

szukałem, szukałem i chyba znalazłem coś co jest najlepsze - http://www.pyinstaller.org/ :) Za chwilę przetestuję.

edit2:

wiesz Sazian... z ciekawości sobie na virtualbox'ie zainstalowałem Ubuntu 10.04 i wymagane biblioteki i odpaliłem grę (bez żadnych zmian ustawień praw dostępu, rozpakowaną na Pulpit prosto z zipa) bez takiego błędu jak u Ciebie. Screen ( http://img84.imageshack.us/img84/6425/zrzutekranuq0.png )

Ale i tak skorzystam z tego pyinstaller i mam nadzieję, że przetestujesz, bo informacja o tym, że gra uruchomiła się na tym samym systemie, na którym wcześniej nie działało to cenna informacja :)

edit3:

Sazian: wysyłam Ci na PM linka do testowego skryptu sprawdzającego Box2D :)

Link do komentarza
Udostępnij na innych stronach

Sorry, że post pod postem, ale to celowe, żeby powiadomienie poszło do wszystkich wypowiadających się.

http://download.jason.o12.pl/BricksKnockOffLinux.zip - zrobiłem paczkę Bricks Knock Off dla Linuksa i prosiłbym o przetestowanie ;)

 

edit:

Dla testu chciałem uruchomić na Ubuntu 8.04, teraz jest tylko problem z wersją glibc, ale to dlatego, że na zbyt nowej dystrybucji robiłem. Czytałem, że jak zrobię na jak starszej to na nowszych będzie działać ;) Mam nadzieję teraz, że znajdę wszystkie potrzebne paczki i będzie działać na wszystkich dystrybucjach (nie tylko Ubuntu) nowszych niż Ubuntu 8.04 ;)

Link do komentarza
Udostępnij na innych stronach

spoko :)

 

BTW. prawdopodobnie będę musiał zrobić paczki dla najpopularniejszych dystrybucji Linuksa, po moich poszukiwaniach informacji o tym, to jedyna właściwa droga, przynajmniej się podszkolę w tworzeniu pakietów ;) Ale to będę robił dopiero jak będzie warto - czyli jak dorobię aplikację - levele, features'y.

Link do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...