Уникайте 3D , тому що вам потрібно знати, як робити 3D-моделі або знаходити хороші, вам слід знати, як завантажувати такі моделі (найчастіше епічні завдання самі по собі, на жаль), і як малювати їх на екрані (наприклад, OpenGL або DirectX потребує великої роботи для невеликого виграшу, і навіть такий двигун, як jMonkeyEngine, вимагає знань, як використовувати двигун, а також основні знання в 3D). Виблискувати 2D зображення на екрані та переміщувати їх набагато простіше, ніж мати справу з вершинами, матеріалами, переглядати матриці, перетворення тощо тощо. Я думаю, ви зрозуміли, що ви зрозуміли.
Дотримуйтесь вбудованих бібліотек та класів Java: Graphics2D, ImageIO, слухачів миші та клавіатури AWT, Canvas, API API Java Sound тощо. До переваг дотримуватися цих методів замість того, щоб знайти якусь іншу бібліотеку, можна віднести: ви їх вже знаєте (певною мірою), ви знаєте, що вони добре перевірені та стабільні, і, як правило, має сенс, онлайн-документація та ресурси є в достатку, і вони портативні, тому вам не доведеться турбуватися про встановлення додаткових бібліотек з рідними бібліотеками і все таке.
Заздалегідь створити невелику бібліотеку фрагментів коду. Сюди можна віднести такі речі, як завантаження зображення, малюнок зображення до положення на екрані, масштабування зображення та інші ефекти, відтворення звуку, циклічна фонова музика, виявлення меж поля зіткнення, малювання тексту. Також є програма для скелета, яка відкриває кадр (або аплет), додає до нього Canvas, а методи фарби та перефарбовування полотна повинні бути відмінені, а нитка повинна бути в циклі методу перефарбовування полотна (або таймера, який називає його). Ви можете дізнатися ці речі, якщо пошукати Java 2D game programming
. Припускаючи, що у вас є доступ до бібліотеки вашого університету, у вас має бути кілька хороших книг для ігор Java; перевірте їх і прогляньте через них згадані фрагменти та інші, які я пропустив.
Заздалегідь практикуйте керування джерелами та розподіл роботи зі своєю командою.Чи збираєтесь ви використовувати Subversion, Git, Mercurial чи щось інше? Чи всі комп'ютери встановлені на одну і ту ж сучасну версію Java? Створіть своє сховище, введіть / натисніть деякі файли, переконайтесь, що в усіх сховище перевірено та готове перейти у вашу систему. Можливо, зробіть додаток "привіт світ" і переконайтеся, що кожен зможе його видозмінити та змінити та здійснити; і переконайтеся, що ви знаєте, як поводитися з об'єднанням (чи уникаєте ви цього повністю за допомогою хорошого спілкування чи парного програмування, чи знаєте, як використовувати інструмент злиття) Або якщо ви не знайомі з контролем джерела, переконайтеся, що ви знайдете рішення, яке працює; чи це парне програмування, тоді як третя людина займається мистецтвом чи звуками, чи щось інше, просто переконайтеся, що ви організовані з самого початку, або ви витратите багато часу.
Закладка посилань на веб-сайти, які надають безкоштовні засоби масової інформації. Існує досить багато сайтів подібного типу, перелічених у інших питаннях тут; сайти, як безкоштовне звучанняідеально підходять для швидкого пошуку корисних носіїв для використання у грі, коли у вас немає часу зробити це з нуля. Закладка на цей сайт, звичайно, тому ви можете задати питання, якщо ви щось застрягли. Форуми із закладками, такі як форуми gamedev.net, щоб ви могли шукати на них відповіді. Якщо ви вирішили використовувати сторонні бібліотеки, зробіть закладки на їх веб-сайті. Впорядкуйте ці закладки у папки та візьміть якомога більше та переконайтесь, що поділитесь ними, щоб усі троє мали однакову корисну бібліотеку закладок. Щоб обійти та зібрати ці закладки та впорядкувати їх за типом / тематикою не потрібно багато часу, але це економить вам багато часу, коли вам не доведеться пам'ятати всі ці веб-сайти посеред вашого проекту.
Для отримання додаткових пропозицій дивіться відповіді на моє запитання "Як підготуватися до змагань з розробки ігор?" .
Щоб вирішити решту ваших запитань ... Загальна порада: не прагніть високо . Однак він може сильно відрізнятися залежно від того, наскільки ви підготовлені (тобто мої вище пропозиції) та ваших навичок роботи на Java. Це багато в чому особисте судження, засноване на вашій історії, але оскільки ніхто з вас не має історії створення ігор (а отже, не може судити про необхідний час), ціль дійсно дуже низька . Придумайте дійсно основну ідею, яку легко реалізувати в 2D без будь-яких сучасних концепцій (наприклад, уникайте зіткнень піксельної стрілки, шалених розрахунків фізики, ефектів частинок тощо). Але тоді створіть пріоритетний списокособливостей гри, якомога детальніше (наприклад, розбийте кожну функцію на якомога більше окремих завдань). Таким чином, ви просто працюєте внизу списку, наскільки це можливо, і якщо ви не добираєтесь до якихось завдань з низьким пріоритетом, це не повинно бути великою справою. Це потрібно робити обережно (вам все-таки потрібна функціональна гра наприкінці часу, тому є мінімальний набір завдань, які потрібно виконати, а деякі завдання залежать від інших завдань), але в цілому я думаю, що це найкращий підхід, коли ви не знаєте, скільки часу триватиме.