Гра Java через день чи два [закрито]


9

Ми є троє людей, які збираються зробити просту гру на Java як шкільний проект (університет, перший курс). Гра повинна бути орієнтована на об'єкти. Ми не маємо багато часу, 10-20 годин вершини. Ніхто з нас не має досвіду розробки ігор, але всі ми маємо неабиякі навички роботи на Java.

Ми можемо вибрати саме таку гру, і саме там криється проблема. Наскільки високо ми повинні прагнути? Займається змагання, тому ми хочемо зробити найкращу гру за той час, який ми маємо. 3D-гра нереальна? Чи варто використовувати якісь ігрові двигуни / бібліотеки? Якого функціоналу слід уникати?


4
3D націлений на занадто високу ціль, незалежно від часу, враховуючи, що у вас немає досвіду gamedev. ; P
Качка комуніста

на жаль, я зрозумів, що: P
Øyvind

ПОНГ! весла, м'яч - там є власні предмети, додайте рахунок. м'яч вдаряється в весло, в якому раз ви направляєте на -1. якщо м'яч проходить повз точки веслування іншої команди, нехай м'яч подається іншому гравцеві. чи це занадто просто?>
Розмовляє

Я думаю, можливо, ми повинні прагнути до кращої, більш креативної концепції, хоча й простої для розвитку ...
Øyvind

1
Як щодо того, щоб поділитися своєю грою з нами? :)
ashes999

Відповіді:


23

Уникайте 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 без будь-яких сучасних концепцій (наприклад, уникайте зіткнень піксельної стрілки, шалених розрахунків фізики, ефектів частинок тощо). Але тоді створіть пріоритетний списокособливостей гри, якомога детальніше (наприклад, розбийте кожну функцію на якомога більше окремих завдань). Таким чином, ви просто працюєте внизу списку, наскільки це можливо, і якщо ви не добираєтесь до якихось завдань з низьким пріоритетом, це не повинно бути великою справою. Це потрібно робити обережно (вам все-таки потрібна функціональна гра наприкінці часу, тому є мінімальний набір завдань, які потрібно виконати, а деякі завдання залежать від інших завдань), але в цілому я думаю, що це найкращий підхід, коли ви не знаєте, скільки часу триватиме.


Це відмінна порада.
Олександр Гесслер

1
Хороші бали. Хоча я думаю, що контроль над джерелами також може ускладнити речі для початківців (уявіть, хтось заплутує репо). Коли час є критичним, не слід починати використовувати нові інструменти. Але якщо ви вже знайомі з VCS, то його неодмінно слід використовувати.
bummzack

4
Поради Ricket щодо орієнтації на низький рівень та використання пріоритетного списку чудові - вони стосуються мінімізації ризику та збільшення ітерації. Ви хочете уникати ситуацій, коли вам доводиться працювати 8 годин, перш ніж щось у вас працює. Якщо це не виходить, або якщо це займе більше часу, ви, можливо, нічого не закінчите. Натомість спробуйте запустити гру, яка працює менше 1 години, а потім витрачайте решту своїх 10 годин на додавання речей, гру на тестування та вдосконалення. Під час гри ви продовжуватимете шукати більше речей.
amitp

@bummzack Погоджено! Він дійсно може перешкоджати, таким чином, практикувати і бути впевненим у цьому є ключовим, але він також може бути надзвичайно чудовим і корисним при правильному використанні.
Ricket

Найкраще, як швидко налагодити роботу - це робити це в режимі екстремального програмування (краще, ніж svns), а це означає, що цілі команди сидять разом перед одним комп'ютером. Він чудово працює в невеликих командах (2-3 макс). Ви підтримуєте один одного, і проблеми вирішуються швидше - ви не засмучуєтесь.
Нотабене

2

Не прагніть занадто високо. Виберіть щось, що вас цікавить, і побудуйте навколо цього щось просте. Приклад: Можливо, вам справді цікаво дізнатися про фізичний двигун. Чому б не скласти фізичну головоломку, як руйнівник тотемів чи подібне? Постарайтеся обертатися навколо основного елемента і не включайте в себе інші складні речі, такі як AI, складне візуалізація / графіка / шейдери тощо.

Зосередьтеся на одному аспекті і спробуйте знайти ігрового механіка, який підходить цьому. Якщо вас цікавить 3D, ваша гра може бути такою ж простою, як тик-так-носок, але зосередитись на отриманні хорошої 3D-графіки на екрані.

Не намагайтеся вивчити занадто багато нового. Скористайтеся наявними рамками / інструментами якомога більше.

Щоб завершити це, ось кілька ідей для гри «Початок роботи»: Які хороші ігри, щоб «заробити крила»?

Оновлення: Оскільки у вас дійсно не вистачає часу, я б скоротив «нові речі для навчання» до абсолютного мінімуму. Фізичний двигун вже може бути надмірним, якщо ви ніколи не використовували його раніше. Виберіть також ігрового механіка, який ви вже знаєте, бажано з чітко визначеним і невеликим набором правил і обмеженою кількістю ігрових станів.


2

Якщо у вас немає попереднього досвіду написання 3D-ігор, я б негайно відмовився від ідеї 3D. Натомість зосередьтеся на простій ігровій концепції та спробуйте реалізувати її за допомогою простої 2D графіки. Переконайтеся, що ви застосовуєте ігрову механіку вперше - якщо ви закінчите раніше, ви можете додати складні візуальні ефекти.

Але гра без геймплея - це не гра, тоді як гра без приголомшливої ​​графіки все ще може бути цікавою.

20-30 робочих годин - це дуже мало часу для хорошої гри, тому вам дійсно потрібно ретельно планувати та визначати пріоритетні завдання, інакше ви ніколи не досягнете належного результату.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.