Jesteśmy trzema osobami, które zamierzają stworzyć prostą grę w Javie jako projekt szkolny (uniwersytet, pierwszy rok). Gra musi być zorientowana obiektowo. Nie mamy dużo czasu, 10-20 godzin na szczycie. Nikt z nas nie ma żadnego doświadczenia w tworzeniu gier, ale wszyscy mamy uczciwe umiejętności obsługi języka Java.
Możemy dokładnie wybrać rodzaj gry i na tym polega problem. Jak wysoko powinniśmy celować? W grę wchodzą zawody, dlatego chcemy stworzyć najlepszą grę w danym momencie. Czy gra 3D jest nierealna? Czy powinniśmy używać silników / bibliotek gier? Jakiej funkcjonalności należy unikać?
software-engineering
java
Øyvind
źródło
źródło
Odpowiedzi:
Unikaj 3D , ponieważ musisz wiedzieć, jak tworzyć modele 3D lub znaleźć dobre, musisz wiedzieć, jak ładować takie modele (często epickie zadanie samo w sobie, niestety) i jak rysować je na ekranie (np. OpenGL lub DirectX wymaga dużo pracy, ale zyskuje niewiele, a nawet silnik taki jak jMonkeyEngine wymaga wiedzy o tym, jak korzystać z silnika, a także podstawowej wiedzy o 3D). Przesuwanie obrazów 2D na ekranie i przenoszenie ich jest o wiele prostsze niż zajmowanie się wierzchołkami, materiałami, matrycami widokowymi, transformacjami itp. Myślę, że rozumiesz.
Trzymaj się wbudowanych bibliotek i klas Java: Graphics2D, ImageIO, słuchaczy myszy i klawiatury AWT, Canvas, Java Sound API i tak dalej. Korzyści z trzymania się ich zamiast znajdowania innej biblioteki obejmują: już je znasz (do pewnego stopnia), wiesz, że są dobrze przetestowane i stabilne i ogólnie mają sens, dokumentacja online i zasoby są obfite, i są przenośne, więc nie musisz się martwić instalowaniem dodatkowych bibliotek z bibliotekami natywnymi i tym podobne.
Z góry zbuduj małą bibliotekę fragmentów kodu. Należą do nich między innymi ładowanie obrazu, rysowanie obrazu do pozycji na ekranie, skalowanie obrazu i innych efektów, odtwarzanie dźwięku, zapętlanie muzyki w tle, wykrywanie kolizji ramki granicznej, rysowanie tekstu. Również aplikacja szkieletu, która otwiera ramkę (lub aplet), dodaje do niej płótno, a metody malowania i odmalowywania płótna powinny zostać zastąpione, a wątek powinien zapętlać metodę odmalowania płótna (lub zegar wywołujący ją). Możesz się tego nauczyć, jeśli szukasz
Java 2D game programming
. Zakładając, że masz dostęp do biblioteki uniwersyteckiej, powinieneś mieć do dyspozycji kilka dobrych książek o grach Java; sprawdź je i przejrzyj je, aby znaleźć wyżej wspomniane fragmenty i inne, za którymi tęskniłem.Ćwicz kontrolę źródła i podział pracy ze swoim zespołem z wyprzedzeniem.Czy zamierzasz używać Subversion, Git, Mercurial lub czegoś innego? Czy komputery wszystkich użytkowników mają tę samą aktualną wersję Java? Utwórz repozytorium, zatwierdź / wypchnij niektóre pliki, upewnij się, że wszyscy mają sprawdzone repozytorium i są gotowe do uruchomienia w systemie. Może popełnij aplikację „hello world” i upewnij się, że każdy może ją pobrać, zmodyfikować i zatwierdzić; i upewnij się, że wiesz, jak poradzić sobie z łączeniem (niezależnie od tego, czy unikasz go całkowicie dzięki dobrej komunikacji lub programowaniu parowemu, czy wiesz, jak korzystać z narzędzia scalania). Lub, jeśli nie znasz kontroli źródła, upewnij się, że znajdziesz rozwiązanie, które działa; niezależnie od tego, czy jest to programowanie parami, podczas gdy trzecia osoba tworzy sztukę lub dźwięki, czy coś innego, po prostu upewnij się, że jesteś zorganizowany od samego początku, inaczej zmarnujesz mnóstwo czasu.
Łącza do zakładek do stron internetowych, które udostępniają bezpłatne media. Było wiele takich witryn wymienionych w innych pytaniach tutaj; strony takie jak freesoundidealnie nadają się do szybkiego znajdowania przydatnych multimediów, które można wykorzystać w grze, gdy nie masz czasu na tworzenie jej od zera. Oczywiście dodaj tę stronę do zakładek, abyś mógł zadać pytanie, jeśli utkniesz na czymś. Dodaj do zakładek fora, takie jak fora gamedev.net, aby móc je wyszukiwać w poszukiwaniu odpowiedzi. Jeśli zdecydujesz się korzystać z biblioteki innej firmy, dodaj jej stronę do zakładek. Uporządkuj te zakładki w folderach i weź jak najwięcej, i upewnij się, że je udostępniasz, aby wszyscy trzej mieli tę samą przydatną bibliotekę zakładek. Zbieranie tych zakładek i organizowanie ich według typu / tematu nie zajmuje dużo czasu, ale oszczędza dużo czasu, gdy nie musisz pamiętać wszystkich stron w środku projektu.
Aby uzyskać więcej sugestii, zobacz odpowiedzi na moje pytanie „Jak przygotować się do konkursu na tworzenie gier?” .
Aby odpowiedzieć na resztę pytania ... Ogólna rada to: nie mierz wysoko . Jednak może się to znacznie różnić w zależności od tego, jak jesteś przygotowany (tj. Moje powyższe sugestie) i umiejętności w Javie. Jest to w dużej mierze osobisty osąd oparty na twojej historii, ale ponieważ żaden z was nie miał historii tworzenia gier (i dlatego nie może ocenić niezbędnego czasu), cel naprawdę naprawdę niski . Wymyśl naprawdę podstawowy pomysł, który można łatwo wdrożyć w 2D bez żadnych zaawansowanych koncepcji (np. Unikaj zderzeń pikseli, szalonych obliczeń fizycznych, efektów cząsteczkowych itp.). Ale następnie utwórz listę priorytetowąo cechach gry, tak szczegółowo, jak to możliwe (np. podziel każdą funkcję na tak wiele oddzielnych zadań, jak to możliwe). W ten sposób po prostu posuwasz się w dół listy tak daleko, jak to możliwe, a jeśli nie dostaniesz się do zadań o niskim priorytecie, nie powinno to być wielkim problemem. Trzeba to zrobić ostrożnie (pod koniec czasu nadal potrzebujesz funkcjonalnej gry, więc istnieje minimalny zestaw zadań do wykonania, a niektóre zadania zależą od innych zadań), ale ogólnie myślę, że jest to najlepsze podejście, gdy nie wiesz, jak długo to zajmie.
źródło
Nie celuj zbyt wysoko. Wybierz coś, co Cię interesuje i zbuduj wokół tego coś prostego. Przykład: Może naprawdę interesuje Cię nauka o silniku fizycznym. Dlaczego nie zbudować łamigłówki z fizyki, takiej jak niszczyciel totemów lub podobny? Spróbuj obracać się wokół elementu podstawowego i nie uwzględniaj innych skomplikowanych rzeczy, takich jak sztuczna inteligencja, zaawansowane renderowanie / grafika / shadery itp.
Skoncentruj się na jednym aspekcie i spróbuj znaleźć odpowiednią dla siebie mechanikę gry. Jeśli interesujesz się 3D, Twoja gra może być tak prosta jak kółko i krzyżyk, ale skup się na uzyskaniu dobrej grafiki 3D na ekranie.
Nie próbuj uczyć się zbyt wielu nowych rzeczy na raz. Wykorzystaj istniejące ramy / narzędzia w jak największym stopniu.
Podsumowując, oto kilka pomysłów na grę dla początkujących: w jakie gry można „zarobić skrzydła”?
Aktualizacja: Ponieważ masz naprawdę mało czasu, zredukowałbym „nowe rzeczy do nauczenia się” do absolutnego minimum. Silnik fizyki może być już nadmierny, jeśli nigdy wcześniej go nie używałeś. Wybierz także mechanikę gry, którą już znasz, najlepiej z dobrze zdefiniowanym i małym zestawem reguł oraz ograniczoną liczbą stanów gry.
źródło
Jeśli nie masz wcześniejszego doświadczenia w pisaniu gier 3D, natychmiast porzucę ten pomysł. Zamiast tego skoncentruj się na prostej koncepcji rozgrywki i spróbuj ją wdrożyć przy użyciu prostej grafiki 2D. Najpierw zaimplementuj mechanikę gry - jeśli skończysz wcześniej, możesz nadal dodawać wyrafinowane efekty wizualne.
Ale gra bez rozgrywki nie jest grą, podczas gdy gra bez oszałamiającej grafiki może być nadal fajna.
20-30 godzin pracy to bardzo mało czasu na dobrą grę, więc naprawdę musisz dokładnie zaplanować i uszeregować priorytety swoich zadań, inaczej nigdy nie osiągniesz właściwego rezultatu.
źródło