Gra Java za dzień lub dwa [zamknięte]

9

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ć?

Øyvind
źródło
4
3D celuje trochę za wysoko niezależnie od czasu, biorąc pod uwagę, że nie masz doświadczenia z gamedev. ; P
Kaczka komunistyczna
niestety doszedłem do wniosku, że: P
Øyvind
PONG! wiosła, piłka są tam własne obiekty, dodaj wynik. piłka uderza w wiosło, które pomnożysz o -1. jeśli piłka minie punkt wiosła drugiej drużyny, niech poda piłkę drugiemu zawodnikowi. czy to jest takie proste?>
Spooks
Myślę, że może powinniśmy dążyć do lepszej, bardziej kreatywnej koncepcji, choć łatwej do opracowania ...
Øyvind
1
Co powiesz na udostępnienie nam swojej gry? :)
ashes999

Odpowiedzi:

23

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.

Ricket
źródło
To doskonała rada.
Alexander Gessler
1
Słuszne uwagi. Chociaż myślę, że kontrola źródła może również skomplikować sprawy dla początkujących (wyobraź sobie, że ktoś popsuł repo). Gdy czas ma krytyczne znaczenie, nie należy zaczynać korzystać z nowych narzędzi. Ale jeśli znasz już VCS, z pewnością należy go użyć.
bummzack
4
Rady Ricket dotyczące celowania nisko i korzystania z listy priorytetowej są świetne - dotyczą minimalizacji ryzyka i zwiększenia iteracji. Chcesz uniknąć sytuacji, w których musisz pracować przez 8 godzin, zanim cokolwiek zacznie działać. Jeśli to nie zadziała lub jeśli potrwa to dłużej, możesz skończyć z niczym. Zamiast tego spróbuj uruchomić grę w niecałą godzinę, a następnie spędź resztę 10 godzin na dodawaniu rzeczy, testowaniu i udoskonalaniu. W trakcie gry będziesz znajdować kolejne rzeczy do dodania.
amitp
@bummzack Zgoda! Może NAPRAWDĘ przeszkadzać, dlatego ćwiczenie i upewnienie się, że są kluczowe, może być również super niesamowite i przydatne, jeśli jest właściwie używane.
Ricket
Najlepszym sposobem szybkiego działania jest zrobienie tego w ekstremalny sposób programistyczny (lepszy niż svns), co oznacza, że ​​całe zespoły siedzą razem przed jednym komputerem. Działa świetnie w małych zespołach (maks. 2-3). Wspieracie się nawzajem, a problemy rozwiązuje się szybciej - nie denerwujecie się.
Notabene
2

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.

grzmot
źródło
2

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.

Alexander Gessler
źródło
Rzeczywiście dobry punkt :)
Øyvind