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.