Autor Wątek: Biblioteka graficzna do tworzenia gier  (Przeczytany 9028 razy)

Offline Arthes

  • Użytkownik
    • Gromaniak

# Wrzesień 18, 2011, 16:19:05
Witam,
znacie może jakąś ciekawą bibliotekę do tworzenia gier 2D w C#? Od razu mówię, że XNA odpada, chcę coś innego ;]

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline gotji

  • Użytkownik

# Wrzesień 18, 2011, 16:40:14
GDI+ :)

Offline komorra

  • Użytkownik
    • Blog naszego teamu (o grze Voxelfield)

# Wrzesień 18, 2011, 17:51:31
A jakie ta biblioteka powinna miec możliwości skoro XNA odpada?

Offline Arthes

  • Użytkownik
    • Gromaniak

# Wrzesień 18, 2011, 17:59:53
Proste wczytywanie sprite'ów, jakieś związane z nimi funkcje (przesuwanie, obracanie, itd), obsługa eventów, wypisywanie tekstu ;]

Offline komorra

  • Użytkownik
    • Blog naszego teamu (o grze Voxelfield)

# Wrzesień 18, 2011, 18:04:34
Proste wczytywanie sprite'ów, jakieś związane z nimi funkcje (przesuwanie, obracanie, itd), obsługa eventów, wypisywanie tekstu ;]
Hmm... Niby to wszystko ma XNA, nic mi nie przychodzi innego do głowy z bibliotek na C# oprócz właśnie XNA, chociaż możesz spróbowac http://www.flatredball.com/ ale szczerze to nigdy mi to do gustu jakoś nie przypadło.

Offline Isk

  • Użytkownik

# Wrzesień 18, 2011, 19:00:50
Dwie podstawowe:
SlimDX - DirectX
OpenTK - OpenGL
MDX 1.1

Istnieje również kilka innych dla 2D:
- Gorgon oparty na SLimDX
- ZweiDe oparty na TaoFramework (starszy od OpenTK OpenGL dla C# :>)
- SDL.NET

Swego czasu bardzo uparcie chciałem wykorzystać C# do gier 2D. Powyższe propozycje wygrzebałem potestowałem jednak po dłuższym czasie doszedłem do wniosku, że C++ wraz z Sdl, Hge, etc. jest szybsze wydajniejsze i łatwiejsze do nauki choćby ze względu na więcej materiałów w sieci. Jeśli jednak bardzo chcesz pozostać przy C# polecałbym OpenGL (SlimDX lub MDX <martwy, lecz jeszcze używany> może być za trudny po XNA).

Offline Charibo

  • Redaktor

# Wrzesień 18, 2011, 19:36:18
Swego czasu bardzo uparcie chciałem wykorzystać C# do gier 2D. Powyższe propozycje wygrzebałem potestowałem jednak po dłuższym czasie doszedłem do wniosku, że C++ wraz z Sdl, Hge, etc. jest szybsze wydajniejsze i łatwiejsze do nauki choćby ze względu na więcej materiałów w sieci.
Lolwut? SDL łatwiejsze do nauki niż XNA? C++ niż C#? To są herezje trochę :)

Offline Esidar

  • Użytkownik

# Wrzesień 18, 2011, 21:41:37
Proszę, o to przyśpieszony kurs użycia XNA do gry 2D:

* Otwieramy VisualStudio.
* Wybieramy New Project i tam wybieramy typ projektu "XNA PC"
* We świeżo otwartym pliku .cs wyszukujemy miejsce na zmienne i wklepujemy:
Texture2D mojaTeksturka;
SpriteBatch spriteBatch;
* We świeżo otwartym pliku .cs wyszukujemy metodę Initialize i tam wklepujemy ten kod:
spriteBatch = new SpriteBatch( GraphicsDevice );
mojaTeksturka = Texture2D.FromStream( GraphicsDevice, System.IO.File.Open( "ludzik.png", System.IO.FileMode.Open ) );
* We świeżo otwartym pliku .cs wyszukujemy metodę OnDraw i tam wklepujemy ten kod:
spriteBatch.Begin();
spriteBatch.Draw(mojaTeksturka, new Vector2(10, 10), Color.White);
spriteBatch.End();
* Uruchamiamy F5 i oglądamy narysowanego Sprite'a w 2D.

Offline Nsuidara

  • Użytkownik
    • Site

# Wrzesień 18, 2011, 21:50:14
Faktem że XNA jest dość łatwe, ale z moich obserwacji wydajne to to nie jest zbytnio ^^

Offline kubera

  • Użytkownik
    • Prywatna strona

# Wrzesień 18, 2011, 22:00:52
Ostatnio, o ile się nie mylę, SlimDX jest zastępowany przez nową wersję - SharpDX.

Offline Charibo

  • Redaktor

# Wrzesień 18, 2011, 22:17:41
Faktem że XNA jest dość łatwe, ale z moich obserwacji wydajne to to nie jest zbytnio ^^
To coś popsułeś z metodologią tych obserwacji :) Może nie stosowałeś się do zasad optymalizacji i pisałeś po prostu niewydajny kod? Bo z moich wynika, że różnica w wydajności jest niezauważalna przy dzisiejszych prędkościach procesorów i stopniu skomplikowania amatorskich projektów. W tym środowisku można robić różne fajne gry (klik, klik) które chodzą szybko, ładnie i wyglądają nieźle. I będąc amatorem/developerem indie i tak ciężko zrobić lepsze. I jeszcze sprzedać wygodę programowania za wyimaginowaną wydajność :)

Offline Avaj

  • Użytkownik

# Wrzesień 18, 2011, 23:12:11
To coś popsułeś z metodologią tych obserwacji :) Może nie stosowałeś się do zasad optymalizacji i pisałeś po prostu niewydajny kod? Bo z moich wynika, że różnica w wydajności jest niezauważalna przy dzisiejszych prędkościach procesorów i stopniu skomplikowania amatorskich projektów. W tym środowisku można robić różne fajne gry (klik, klik) które chodzą szybko, ładnie i wyglądają nieźle. I będąc amatorem/developerem indie i tak ciężko zrobić lepsze. I jeszcze sprzedać wygodę programowania za wyimaginowaną wydajność :)
ja bym to dał jako klik

Offline Isk

  • Użytkownik

# Wrzesień 19, 2011, 01:19:00
Lolwut? SDL łatwiejsze do nauki niż XNA? C++ niż C#? To są herezje trochę :)

2D to w większości wyświetlanie obrazków i "manipulacje" pikselami. Dopóki grę tworzysz "tutorialowo" to przyznaję wydajność nie jest zła. Jednak ja chciałem tworzyc tekstury niestandartowo. Tu z pomocą przychodzi metoda FromFile/FromStream ( w zależności od wersji XNA), która jest potwornie powolna. Może się mylę, ale pokaż mi sposób na wczytanie tekstury z danych, który zapewnia prędkość porównywalną do np.: hge, gdzie dane są zapisane jakimś dziwaczym ( chińskim sposobem :D - każdy piksel to przesunięcie, mnożenie, dodawanie etc... ) - natychmiast wrócę do XNA. Widziałem projekty z wykorzystaniem C#/VB + MDX ( lub SlimDX - nie pamiętam już dokładnie ) bazujące na tych samych bibliotekach przecierając oczy ze zdumienia - jak on wytrzasnął 3k FPS :)

O samym C++ vs C# nie chcę się rozpisywać, lecz osobiście zakochałem się w beznadziejnie banalnym zapisie danych do struktury :)

SDL może nie jest łatwiejszy, jednak Hge jest łatwe - jest Update i Draw jak w XNA nawet;> Wyświetlanie obrazków również podobne ( nie wiem jak jest z wczytywaniem z np.: png ale perpixel sprawuje się świetnie;) ).

Offline Esidar

  • Użytkownik

# Wrzesień 19, 2011, 11:02:15
Tu z pomocą przychodzi metoda FromFile/FromStream ( w zależności od wersji XNA), która jest potwornie powolna.
W jakim sensie wolna ? Nie powinna mieć wpływu na prędkość renderingu, bo nie powinieneś jej używać w czasie wyświetlania. Jeżeli potrzebujesz streamowania tekstur to rób to na osobnym wątku. FromStream może być wolne jeśli wczytujesz teksturę z .jpg lub .png. Wtedy dochodzi czas potrzebny na dekodowanie. Jeżeli masz grafikę przygotowaną jako RAW, np. we własnym formacie pliku, to możesz ją wczytywać poprzez:
Texture2D texture;
texture.SetData<>()
I to powinno być szybkie.


Offline Wiesiu

  • Użytkownik

# Wrzesień 19, 2011, 11:58:16
Na LD21 znalazłem link do tego: http://polycode.org/