Skocz do zawartości

[C#] Porady do przeprowadzki?


Rekomendowane odpowiedzi

Witam tutejszych programistów!

 

W ciągu ostatnich paru miesięcy całkiem przyjemnie programowało mi się w C# i chętnie skorzystałabym z jego możliwości przy tworzeniu gier, które dotychczas robiłabym w GMie. Jednak jest parę kluczowych elementów, które GM całkiem ułatwia, a których póki co jeszcze nie odkryłam. W szczególności ułatwienia, które chętnie bym widziała, to:

- przechowywanie obrazków w wygodnym miejscu, i to najlepiej tak, żeby te obrazki były wewnątrz programu

- możliwość w miarę wydajnego rysowania tych obrazków na ekranie lub jeden na drugim (trochę jak surfaces; prawdopodobnie jest do tego klasa z bitmapami czy coś O.o), uwzględniające lub nie kanały alpha

- obsługa i przechowywanie dźwięków (najlepiej modułków, choć *.oggi też powinny działać całkiem nieźle; i może *.wavy dla pojedynczych dźwięków ^^")

- obsługa i przechowywanie czcionek? ← niezbyt pilne

- prawdopodobnie powyższe "przechowywanie" może zostać zrealizowane przez przechowywanie plików w ogóle

- bardzo mile widziana obsługa klatkowości (tj. kod powtarzający się cyklicznie np. 60 razy na sekundę, przeplatany cyklami rysowania)

- a tym bardziej z łatwym do odebrania stanem klawisza klawiatury, stanem przycisku myszy i pozycją myszy

 

Myślę, że takie coś by było już w miarę wystarczające, abym na bazie tego mogła skonstruować to co bym chciała.

 

Ktoś zna narzędzie/bibliotekę/zestaw powyższych które by spełniało te funkcje, i opisałby pokrótce/podlinkowałby *przyjazny* poradnik jakbym miała się tym posługiwać? ^_^

Odnośnik do komentarza
Udostępnij na innych stronach

Żeby zasoby były wewnątrz exe możesz użyć resources.

Co do silnika. Można XNA ale nie jest już rozwijane.

Co do zamienników XNA to MonoXNA, ANX framework. Jak czysty directx/opengl to SharpDX/OpenTK.

Ewentualnie Unity 3D.

SFML.NET - Grafika, okno i audio. Nie ma tu raczej funkcji typowo do gier.

Pracuję już od jakiegoś czasu nad frameworkiem opartym właśnie na sfml.net. https://github.com/Symeg/Smart2DGameFramework

Nie jest jeszcze w pełni gotowy, ale nie zostało dużo aby można było normalnie tworzyć w tym gry. Tutaj możesz więcej przeczytać/zobaczyć: http://warsztat.gd/projects/smart2dgameframework

Odnośnik do komentarza
Udostępnij na innych stronach

Dobra, próbowałam coś kombinować z SFMLem, ściągnęłam pliki do .NETa (stąd, wersja 32bit), dodałam pliki z folderu "lib" do References do przykładowego programu, ale nie chce mi dodać bibliotek z "extlibs", które też są chyba wymagane. Błąd przy dodawaniu tych plików:

 

"A reference to [...]\csfml-window-2.dll could not be added. Please make sure that the file is accessible and that it is a valid assembly or COM component."

 

Wiesz może, czemu to to nie chce mi działać? O.o"

Odnośnik do komentarza
Udostępnij na innych stronach

Bo to z extlibs to biblioteki natywne. Wrzuć je do folderu z exekiem, lub (wygodniej) dodaj do projektu, zaznacz je, a następnie w zakładce Properties ustaw właściwość "Copy to Output Directory" na "Copy if newer".

Po 2. W Configuration managerze zmień z Any CPU na x86 (używasz bibliotek 32 bit). Na 32 bitowym systemie nie będziesz miała błędów jeśli zostawisz Any CPU, ale na 64 bit już tak.

Odnośnik do komentarza
Udostępnij na innych stronach

bardzo mile widziana obsługa klatkowości (tj. kod powtarzający się cyklicznie np. 60 razy na sekundę, przeplatany cyklami rysowania)

Skoro wybrałaś SFML.NET musisz sobie sama zaimplementować.

Co prawda jest bodajże funkcja SetFramerateLimit ale u mnie jakoś średnio działała w moim przypadku słabo się sprawdza.

Tutaj fajny art z którego korzystałem: http://entropyinteractive.com/2011/02/game...-the-game-loop/.

Odnośnik do komentarza
Udostępnij na innych stronach

OK, zadziałało mi to to, i mam już nawet programik białym prostokącikiem latającym po planszy. Jej!

 

Nie do końca wiem, co mam rozumieć przez "średnie" działanie funkcji SetFramerateLimit, u mnie wydaje się działać prawidłowo, przynajmniej na razie. Niemniej jeśli coś dziwnego będzie mi się działo, pewnie zajrzę do tamtego arykułu; dzięki za informację. ^^"

 

Jeśli chodzi o Unity, jakoś niespecjalnie mnie to zachęca; może dlatego, że wydaje się jednak być zrobione z myślą o super efektyowynch grach, być może wykorzystujących również 3D itd. i jeszcze by mnie zalało różnymi opcjami z których ja akurat nie chcę korzystać; poza tym ma znacznie dłuższą licencję użytkowania. O.o"

Odnośnik do komentarza
Udostępnij na innych stronach

Miałem na myśli, że w moim przypadku (źle napisałem) :P

 

Ale spójrz. Gra działa z prędkością 60 klatek/s. Co jeśli odpalisz ją na jakimś gorszym sprzęcie? Będzie chodziła 2x wolniej (przykładowo) a tego nie chcemy.

 

Ja zrobiłem to tak, że jeśli nie wyrabiam z czasem to po prostu rzadziej rysuję, ale aktualizuję ciągle w takim samym tempie.

Na "dobrym" sprzęcie będzie to wyglądało tak:

update - draw - update - draw - update - draw ...

a na "gorszym"

update - update - draw - update - update - draw - update - update - draw ...

Szybkość gry jest taka sama. Jedynie można zauważyć przeskoki.

 

Gdybyś miała jakieś problemy to możesz looknąć na moją implementację: metoda GameLoop https://github.com/Symeg/Smart2DGameFramewo.../GameHandler.cs

Odnośnik do komentarza
Udostępnij na innych stronach

Sunflower... tu chodzi o efektywność.. Pisałem w d3d/opengl/xna/sfml/ogre i w różnych innych cudach. Gdybym teraz miał projekty pisać używając tych rozwiązań a nie Unity to po prostu bym się pochlastał.. Pisząc najprościej, w unity przelejesz swoją wizję na grę. Używając po prostu api od zera też zaczniesz przelewać swoją wizję tylko parę lat później.

 

Jest zrobione z myślą o wszystkich grach i nie tylko.. Pisałem w unity gry na pc, anndroida, aplikacja reklamowe i gry na kinecta, programy z funkcjami dotykowymi na pc i różne inne cuda..

Użytkowanie jest proste, po paru tygodniach w dzień zrobisz więcej niż na bazowym api przez miesiąc. Spróbuj, a na pewno nie pożałujesz. Jak będziesz mieć jakiś problem po prostu pisz.

Odnośnik do komentarza
Udostępnij na innych stronach

Jak C# to Unity :P Za 65$ (Bodajże) w asset store możesz kupić 2D Tool Kit i możesz tworzyć gry 2D, oprócz 3D (Zresztą sama też możesz sobie napisać pod Unity plugin do obsługi 2D)

 

Dokumentacja Unity (Script Reference): LINK

Polski Support: LINK

I jeszcze tutki Video(Sam z nich korzystałem) : Kanał użytkownika Pkspre

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...