Избегайте 3D , потому что вам нужно знать, как создавать 3D-модели или находить хорошие, вам нужно знать, как загружать такие модели (к сожалению, само по себе эпическое задание) и как рисовать их на экране (например, OpenGL или DirectX требуют много работы за небольшую выгоду, и даже такой движок, как jMonkeyEngine, требует знаний о том, как использовать движок, а также базовых знаний в 3D). Бить 2D-изображения на экране и перемещать их гораздо проще, чем иметь дело с вершинами, материалами, матрицами представления, преобразованиями и т. Д. И т. Д. Я думаю, вы поняли смысл.
Придерживайтесь встроенных библиотек и классов Java: Graphics2D, ImageIO, слушателей мыши и клавиатуры AWT, Canvas, Java Sound API и так далее. Преимущества использования их вместо поиска какой-либо другой библиотеки включают: вы уже знаете их (в некоторой степени), вы знаете, что они хорошо протестированы и стабильны, и, как правило, имеют смысл, онлайновая документация и ресурсы многочисленны, и они портативны, так что вам не нужно беспокоиться об установке дополнительных библиотек с собственными библиотеками и тому подобное.
Создайте небольшую библиотеку фрагментов кода заранее. Это может включать в себя такие вещи, как загрузка изображения, рисование изображения на экране, масштабирование изображения и другие эффекты, воспроизведение звука, циклическая фоновая музыка, обнаружение столкновений ограничивающего прямоугольника, рисование текста. Также есть скелетное приложение, которое открывает фрейм (или апплет), добавляет к нему Canvas, и методы рисования и перерисовки холста должны быть переопределены, а поток должен зацикливать метод перерисовки холста (или таймер, вызывающий его). Вы можете узнать эти вещи, если вы ищете вокруг Java 2D game programming
. Предполагая, что у вас есть доступ к библиотеке вашего университета, у вас должно быть несколько хороших книг по Java-играм; проверьте их и просмотрите их на предмет вышеупомянутых фрагментов и других, которые я пропустил.
Практикуйте контроль источников и разделение работы с вашей командой заранее.Собираетесь ли вы использовать Subversion, Git, Mercurial или что-то еще? Все компьютеры настроены на одну и ту же последнюю версию Java? Создайте свой репозиторий, зафиксируйте / отправьте несколько файлов, убедитесь, что у всех есть репозиторий, извлеченный и готовый к работе в вашей системе. Возможно, зафиксируйте приложение «hello world» и убедитесь, что каждый может вытащить, изменить и зафиксировать его; и убедитесь, что вы знаете, как справляться со слиянием (независимо от того, избегаете ли вы этого с помощью хорошей коммуникации или парного программирования, или знаете, как использовать инструмент слияния). Или, если вы не знакомы с управлением исходным кодом, убедитесь, что вы нашли решение, которое работает; будь то парное программирование, в то время как третье лицо пишет музыку или звуки, или что-то еще, просто убедитесь, что все организовано с самого начала, иначе вы потратите кучу времени.
Добавьте ссылки на сайты, которые предоставляют бесплатные медиа. Там было довольно много сайтов такого типа, перечисленных в других вопросах здесь; такие сайты, как freesoundидеально подходят для быстрого поиска полезных медиа для использования в вашей игре, когда у вас нет времени, чтобы сделать это с нуля. Добавьте этот сайт в закладки, чтобы вы могли задать вопрос, если вы застряли на чем-то. Добавьте в закладки форумы, такие как gamedev.net, чтобы вы могли искать на них ответы. Если вы решили использовать стороннюю библиотеку, добавьте в закладки их веб-сайт. Организуйте эти закладки в папки и соберите как можно больше, и делитесь ими, чтобы у всех вас была одна и та же полезная библиотека закладок. Это не займет много времени, чтобы обойти и собрать эти закладки и упорядочить их по типу / теме, но это сэкономит вам много времени, когда вам не нужно помнить все эти сайты в середине вашего проекта.
Дополнительные предложения см. В ответах на мой вопрос «Как подготовиться к соревнованию по разработке игр?» ,
Чтобы ответить на остальную часть вашего вопроса ... Общий совет: не ставьте высокие цели . Тем не менее, он может широко варьироваться в зависимости от того, насколько вы подготовлены (то есть мои вышеупомянутые предложения) и ваших навыков в Java. Это в значительной степени личное суждение, основанное на вашей истории, но, поскольку никто из вас не имеет опыта создания игр (и, следовательно, не может судить о необходимом времени), стремитесь к по-настоящему низкому уровню . Придумайте действительно базовую идею, которая может быть легко реализована в 2D без каких-либо дополнительных концепций (например, избегать пиксельных столкновений, сумасшедших физических расчетов, эффектов частиц и т. Д.). Но затем создайте список приоритетово возможностях игры, как можно более подробно (например, разбить каждую функцию на как можно больше отдельных задач). Таким образом, вы просто продвигаетесь вниз по списку, насколько это возможно, и, если вы не доберетесь до некоторых низко приоритетных задач, это не должно иметь большого значения. Это должно быть сделано осторожно (вам все еще нужна функциональная игра в конце времени, поэтому существует минимальный набор задач, которые необходимо выполнить, а некоторые задачи зависят от других задач), но в целом я думаю, что это лучший подход, когда вы не знаете, как много времени займет.