Mój pierwszy program w C#

Wczoraj napisałem, mojego pierwszego tool’a w c#, program jest mi potrzebny do podziału scenerii z RPGcore. Sposób działania jest następujący:

1. Podaje się kod odpowiedzialny za wyświetlanie elementów otoczenia na mapie, kod ten z pliku scenery.dat w folderze z mapą wygląda nastepująco.

[skala] 4×2
22:22
24:22

Odpowiada to wyświetleniu na mapie o współrzędnych 22:22 i 24:22 obrazka skały o wymiarach 4×2 (w kostkach po 25×25 pikseli). Problem polega na tym, że gra korzysta z kratki w punkcie 22:22 (przykładowo) i wyświetla całą skałę która odpowiednio wychodzi na pozostałe kratki (np. 23:22 i 22:23). Problem polega na tym, że jeżeli zniknie nam z mapy punkt 22:22 to zniknie nam cała skała która powinna być jeszcze wyświetlana w punkcie 25:22. Rozwiązanie polega na tym, aby podzielić skałę na części 1×1 czyli kostki 25×25 pikseli. Sam plik nie jest tutaj problemem, ale musimy jeszcze zmienić zawartość pliku scenery.dat aby wyświetlała całą skałę. I tu z pomocą przychodzi właśnie to oto narzędzie, wystarczy wkleić kod odpowiedzialny za pokazywanie całej skały 4×2 a otrzymamy kod, który wyświetli nam skałę w kawałkach.


minicalc_s

Oto link.

Wymagania: .NET framework 2.0

Save’y

Aktualnie pracuję nad zapisywaniem stanu gry w RPGcore. Po wielu trudach udało się skodzić zapisywanie stanu mapy, dzięki czemu po zmianie mapy jej zawartość pozostanie taka sama. Po wyjściu z gry save’y mapy automatycznie znikają. Planuję tworzenie autosave’a.

Następnym etapem jest zapisywanie statystyk i ekwipunku gracza do pliku. Ostatni etap będzie polegał na umożliwieniu graczowi zapisywanie stanu gry. Po naciśnięciu klawisza odpowiadającego za save. Plik gracza będzie łączony z plikami mapy, by w czasie ładowania rozdzielić się i wczytać.

Dialogi finito

Zakończyłem pisanie dialogów do RPGcore, teraz będę się zabierał za save i load. Mam nadzieje, że mój pomysł wypali.

Polega on na tym, że w momencie zmiany lokacji zapisuje się wszystkie anormalności do pliku, a gdy gracz kliknie klawisz save’a te pliki są łączone w 1 duży. Load będzie to dzielił plik na poszczególne mniejsze pliki, które będą uwzględniane przy ładowaniu mapy.

Jak to pomysły przychodzą

Postanowiłem dziś wymyślić sposób zapisywania questów i ich opisów do mojego silnika RPG. Myślałem nad tym dość znaczną ilość czasu bo kilka godzin, w końcu postanowiłem się poddać i zacząłem grę w Starcraft’a (UMS’y :)). Jak to się później okazało czas ten nie poszedł na marne bo pomysł, którego oczekiwałem przedtem pojawił się znikąd w czasie gry. Całego pomysłu wyszła kartka A4 (żeby nie zapomnieć, a o to u mnie nie trudno). Dlatego tak się zastanawiam i dochodzę do wniosku, że w życiu kodera najlepsze jest to, że (cytat Wacha z irca): najpierw walisz głową w mur przez kilka godzin, a potem ni stąd ni zowąd ten mur sam sie burzy.

Dużo nowości

Dawno tu nie zaglądałem, nie wiem czemu, pewnie nie chciało mi się, ale skoro już tu jestem, mogę zaprezentować nowości jakich doczekał sie mój RPG. Zacznę listą:

1. Każdy dostępny rodzaj armoru: hełm, naszyjnik, pierścienie, buty oraz pancerz.
2. Różne typy broni: miecze dwuręczne, jednoręczne, kusze, łuki oraz czary (niewiele bo 2 rodzaje)ofensywne i leczące.
3. Statystki bohatera, dzięki nim można podejrzeć aktualny rozwój gracza. Możliwe jest zdobywanie poziomów po zdobyciu punktów doświadczenia z zabijania potworów. Na każdym poziomie dostajemy po 4 punkty atrybutów i skilli do dowolnego rozdzielenia
4. Ekwipunek denata, każda zabita postać będzie leżeć na ziemi dopóki nie zmienimy mapy, po tym ciało znika, lecz dopóki ciało jest, dopóty możemy go przeszukać i zabrać przedmioty.
5. Dialogi, jeżeli postać jest nieagresywna to jest możliwość porozmawiania z nią (pod warunkiem, że istnieje plik z dialogami dla tego npca). Aktualnie postać może nam wręczyć przedmiot jeżeli go ma przy sobie (istnieje opcja sprawdzenia czy ma przedmiot)
6. Strzelając z broni dalekiego zasięgu możemy ujrzeć dolatujący do przeciwnika pocisk, który ma ustalony zasięg 8 kratek, jeżeli nie trafi w nic to znika. Pociski reagują na kolizje, jeżeli wlecą w coś w co postacie nie mogą normalnie wejść to znika.

Jak widać wiele się zmieniło, ale jeszcze trochę zostało do napisania aktualna lista TODO w uproszczeniu wygląda tak:
1. Zmodyfikować AI npców, aby mogli korzystać z broni dalekiego zasięgu.
2. Rozbudować dialogi.
3. Zapisywanie stanu gry.
4. Jakieś menu.

[=====>.60%]

Dorzuciłem przedmioty, ekwipunek. Oczywiście jest GUI na to, dzięki, któremu można przejrzeć ekwipunek(chwilowo bez przesuwania), można przenosić miksturki na paski i z powrotem. Oraz można używać (jak narazie tylko) miksturek HP i MP

RPG ciąg dalszy

Dodałem możliwość dodawania własnych NPC, które poruszają się za graczem (zombie AI), maja przy tym animacje taką jak postać gracza, a poza tym nic wielkiego nie robią

Postęp pracy: [====>..50%]

Następnym etapem pracy jest, dodanie licznych statystyk dla postaci oraz możliwość atakowania NPCa.

Silnik RPG

Pisanie silniczka jakoś leci, aktualnie w dostępnym demie można:
– stworzyć własną mapkę
– stworzyć własne obiekty, które odpowiednio w pliku .dat opisać będą miały swoje kolizje
– poruszać się po mapce (ludzik ma animacje i różne pozycje stania)
– zmieniać mapę
Postęp pisania:
[==>….35%]

RPG ciag dalszy

Napisałem już klasę silnika w części oraz stworzyłem prowizoryczna klasę postaci. Gra się uruchamia, można poruszać się po trawie po wodzie nie.
RPGcore
Program: Gra.exe

Gra RPG

Chciałbym przedstawić mój następny projekt. Jest to gra RPG, z wyglądu podobna będzie do Tibii, oparta na SDL. Niestety nie mam pomysłu na fabułę, dlatego dodam ją na końcu. Jest to projekt na dłuższy termin i jest sporo trudniejszy od poprzedniego(Arkanoida). Ekran gry będzie składał się z pojedynczych kosteczek 25×25 pixeli. W założeniach gra będzie mogła wczytywać pliki mapy, dialogów, części mapy.

Gra jest w fazie projektowania, ale już zacząłem pisać klasę odpowiadającą za mapę.