Как сделать игру? [закрыто]


20

Моя проблема в том, что всякий раз, когда я начинаю программировать клон игры (для практики) или своей собственной игры, или какую-то другую проблему, я останавливаюсь где-то в середине разработки, потому что я потерял к ней интерес.

Как вы поддерживаете интерес к разработке игры или разработке в целом?


4
Действительно не по теме - попробуйте Performance.stackexchange.com для мотивационных предложений.
Циклоп


Заинтересуйте людей и соберите сообщество вокруг вашей работы. У вас могут быть люди, работающие с вами над небольшим проектом и, таким образом, мотивирующие друг друга. Также постарайтесь разделить работу на мелкие кусочки, насколько это возможно, чтобы у вас было ощущение, что вы продвигаетесь очень быстро, не тратя много времени.
Томас

Ответы:


28

Как дизайнер, я склонен думать о людях как о коллекциях статистики и переменных. Когда вы задаете свой вопрос, я легко могу представить уменьшение [Pong_Dev_Interest] и увеличение [Spa_Inv_Dev_Interest]. Когда разница между ними больше, чем [Dev_Project_Inertia] (в некоторой степени связанный с [Dev_Completion_Desire]), действие на [Pong_Dev] останавливается и [Spa_Inv_Dev] начинается.

На английском языке: Вы не можете завершить проект, потому что ваше сырое желание увидеть готовый продукт отменяется отсутствием интереса к текущему проекту. Если вы действительно хотите закончить один, единственное решение - выбрать один (я бы пошел с вашим клоном понг) и закончить его . Скажите себе: «Я, я знаю, что, возможно, я мог бы усовершенствовать этот клон еще немного, но, черт возьми, черт возьми, это приятно выпустить проект за дверь». Тогда продолжай работать.

Когда вам скучно, продолжайте работать. Когда все идет хорошо, продолжай работать. Когда он падает в дерьмо, продолжай работать! Упорствовать! Будь Маленьким Девом, Который Мог! Я верю в тебя!

Гм. Там немного переусердствовал. Но вы получите дрейф.

Я ежедневно следую своему собственному совету. Я заставил свою среду и актеров работать, встроил условия победы и поражения и создал объекты, которые игрок будет использовать. Я в основном готов начать делать дизайн некоторых уровней, и мой интерес угас. Но я делаю немного каждый день. Каждый день Однажды я буду готов.

И это будет так хорошо!


12

Я всегда задаю себе один и тот же вопрос, и есть несколько вещей, которые вы можете сделать, чтобы мотивировать себя (многие из них уже размещены здесь). Что хорошо для меня, так это то, что я услышал на одном из Indie Talks на GDC в этом году. Думаю, это был парень, который делал игру в Монако :-)

Во-первых, найдите проект, который хорошо подходит для вашего опыта. Т.е. не начинайте делать FPS, если вы даже не знаете основ OpenGL / DirectX. (если вы не используете игровой движок, но здесь дело не в этом ;-))

Затем составьте список того, что нужно сделать и какие этапы вы хотели бы достичь, чтобы вы всегда знали, куда идти. ТОДО - важная часть. Определите свои задачи так, чтобы каждое задание можно было легко выполнить за день или за пару часов . Поэтому, когда вы начинаете программировать, проектировать, моделировать и т. Д., Вы уже видите свет в конце туннеля. Нет ничего более удручающего, чем разработка и кодирование вашего большого игрового движка в течение месяца, не приближаясь к финишной черте. Разбейте большие задачи на более мелкие. Быстрое выполнение задачи действительно полезно и помогает вам двигаться вперед. Например, это был мой список задач для небольшой космической стрелялки:

  • Звуковые эффекты
  • Музыка
  • Переделывать корабль
  • Переделывать ракеты
  • Обнаружение столкновения между выстрелами и игроком / врагом
  • Заставь врагов стрелять
  • Титульный экран
  • Оценка / Жизни / Энергия Независимо от наложения

Все эти задачи было легко выполнить, и, как только они сработают в игре, вы можете выполнить итерации по этим областям и отшлифовать их.

И эй, я закончил небольшую игру. Это не красиво, но в основном сделано, что в итоге было очень полезно :-)


3

Вы должны определить проблему, прежде чем сможете ее решить. Почему вы теряете интерес?

Для меня это обычно происходит потому, что я трачу так много времени на фреймворк, и через несколько недель я не смог даже поднять ни один элемент игрового процесса.

Один из способов улучшить мою мотивацию - сделать итеративное создание прототипов или какую-то форму разработки через тестирование. Обычно это включает в себя автоматизацию тестовых случаев, но поскольку игры интенсивно используют графику, вы не можете автоматизировать экраны и анимацию как тесты, но ваша игровая логика может быть автоматизирована.

Для частей, которые не могут быть автоматизированы, я планирую пару этапов игры. Milestone 1, вероятно, будет отображать спрайт на экране и заставить WASD работать, например. Постепенно я добавлю больше возможностей и рефакторинг.

Это форма разделяй и властвуй. Разбейте на мелкие кусочки, поработайте над тем, с которым вам удобно, а затем интегрируйте. Промыть и повторить. В конце концов, вы можете найти лучший способ переупорядочить вещи, и вы можете реорганизовать свой код. Грязно не иметь архитектуру заранее, но обычно, когда вы начинаете программировать, трудно визуализировать архитектуру, пока у вас не будет опыта в течение нескольких лет.


1
Я делал это долгое время, и нет ничего более захватывающего, чем загрузить первый спрайт вашей игры и перемещать его по экрану.
Распродано Активист

2

Я пытаюсь найти более легкую часть, чтобы сделать. Например, если я не могу понять, как сделать что-то или не хочу, я переключаю передачи и модель или пишу шейдер и т. Д.

Смотрите этот и этот другой пост.


1
+1 Да, это очень хорошая тактика. На некоторое время отвлекись от сложных вещей, иди и сделай ворчливую работу, и когда ты вернешься, крутые уже не будут такими жесткими. Работает для меня.
инженер

2

Если вы не знаете, как правильно структурировать игру, вы должны начать изучать, как абстрагировать их элементы в независимые от игры блоки. Это может помочь вам во многих отношениях (помимо того, чтобы быть интересным), таких как: опыт разделения абстракций от реализаций, лучшее использование наследования и дизайна интерфейса, или просто как поместить игру в несколько файлов, чтобы она выглядела профессионально (или чтобы обеспечить возможность реализации с использованием динамических библиотек или других интерфейсов). Рано или поздно вы поймете, что все можно сделать, и тогда вы больше не будете испытывать проблемы с мотивацией (вы просто делаете это).

У меня была такая же проблема, когда я сначала застрял, но лучшее решение - продолжать двигаться, или вы можете остановиться навсегда, пока что-то не перезагрузит вас (и это может занять слишком много времени). Неважно, если вы просто кодируете 2 строки в течение нескольких дней, но каждый день вам нужно хотя бы открыть проект и попытаться что-то улучшить (это бесконечная задача, но это не проблема).

Если в какой-то момент программа не работает, вам следует отменить то, что вы делали последним (сохранить резервную копию, используя svn или хотя бы .rar с именем даты), до точки, где она работала, и попытаться это сделать. или работайте над другими изменениями, которые вам нужно сделать, пока не захотите попробовать снова.

Сначала вы должны попытаться исправить ошибку с помощью отладчика, но я не знаю, поддерживает ли ваш язык отладчик ... но если вы случайно используете C ++ или что-то подобное (что я бы порекомендовал, если вы хотите создавать игры), вы должны лучше использовать свой отладчик, так как он поможет вам быстро найти ошибку за один запуск.

Чтение о программировании игр также полезно для обсуждения этой темы, если вы не хотите работать над чем-то конкретным. Есть несколько хороших книг и статей об игровых движках и дизайне, которые вы можете найти в Интернете.

Вы не сможете ничего сделать, если не будете практиковать. Пытаться найти ошибку сначала может быть очень сложно, но потом вы узнаете, что на самом деле это легко, если вы знаете, как это сделать. Это то, чему вы научитесь избегать со временем, кодируя таким образом, чтобы ваши изменения не влияли на всю программу, уменьшая количество мест, где нужно искать ошибку. Если каждый раз, когда тебе становится трудно, ты сдаешься, тогда каждый раз, когда ты думаешь о создании игры, ты сдаешься перед тем, как начать. Просто научитесь преодолевать плохой момент, преодолевая его: P Если вы не пройдете тот момент, когда потеряли мотивацию, ваша лень победит, и вы проиграете, вот как это работает, пока вы не научитесь восстанавливать мотивацию без особых усилий.

PS Мне было интересно ... что вы используете, чтобы сделать игру?


+1 За использование контроля источника. Отсутствие SC было основной причиной, по которой я перестал работать над своей игрой 4 года назад (я слишком сильно изменил исходный код, чтобы вернуться назад). К счастью, я недавно осознал преимущества XNA, и игра снова в разработке.
Ричард Марскелл - Дракир

2

[предназначено для того, чтобы оставить его как комментарий к ответу anon, который был удален, когда я его опубликовал. Он упомянул, что у него работает вся эта функциональность, а затем разделил код одного файла на несколько файлов, только чтобы все распалось.]

Re: рефакторинг, вещи могут случиться, даже с профессионалами. Иногда даже с такими хорошими инструментами, как Git, слияние может завершиться неудачей, поэтому вместо функции A и функции B оба работают, но не работают! Единственный выбор - вернуться к A и попробовать еще раз. К счастью, контроль версий сохранит этот код для вас; если вы не используете реальный контроль версий, по крайней мере, делайте это вручную, регулярно архивируя папку dev - место на HD - это дешево! В заключение вернитесь к тому, что работает, и проведите рефакторинг меньшими шагами, убедившись, что игра по-прежнему работает на каждом этапе. Действительно удручает очистка кода только для того, чтобы увидеть, как все разваливается. Просто вернитесь к старому коду.


1
«Если вы не используете реальный контроль версий, запустите » - это правильный ответ. :) На самом деле - его достаточно легко освоить, и он является основным множителем силы. Любой ВК сэкономит вам гораздо больше времени, чем требуется для обучения.
Циклоп

В недавнем междисциплинарном проекте по проектированию в университете, где я учусь в аспирантуре, я был удивлен, увидев, что команда CS не интересовалась контролем источников, пока EE настраивали SVN, прежде чем делать что-то еще. Weird!
3Dave

1

Чтобы оставаться мотивированным, продолжайте говорить себе, что вы создаете игру, а не игровой движок - ну, если это не ваша вещь. И это круто, игровые движки великолепны, но они слишком часто мешают делать игры.

Чтобы проиллюстрировать мою точку зрения, я могу рассказать вам, как часто все происходит: сначала вы создаете несколько спрайтов, перемещаете их на экране с помощью вашей прото-фреймворка и вы в восторге! Вы можете видеть свой прогресс, и он идет хорошо; Вы можете показать своим друзьям.

Затем, как только вы немного поиграете со своей концепцией, вы поймете, что вам нужно сделать свою структуру (или игровой движок) более гибкой. Или что вам следует пересмотреть класс, который не следует последним моделям. И оттуда вы вступаете в спираль смерти: вы перестаете работать над игрой и начинаете работать над игровым движком. И игровые движки не так весело делать. Вы можете часами проводить рефакторинг и вам нечего показать - в игре. И тогда вы теряете интерес.

Итак, помните: создавайте игры, а не игровые движки. Рефакторинг только тогда, когда вам нужно. Не будьте слишком гибкими - просто минимум. *

*: конечно, рефакторинг и гибкость важны. Но не так важно, как на самом деле иметь законченную игру.


1

Попробуйте сделать играбельную версию за один день, независимо от того, насколько она проста. Затем повторяем.


1
  1. Не пытайтесь сделать свою игру слишком сложной!

  2. Разделите вашу задачу на маленькие, конкретные, измеримые подзадачи. Если какая-либо подзадача кажется слишком большой, то подразделяйте ее дальше.

  3. Убедитесь, что вы написали «DONE» большими буквами в вашем списке задач (я использую .txt файл), когда ваша задача будет выполнена. Не удаляйте задачу, потому что тогда не будет похоже, что вы делаете успехи.

Это то чем я занимаюсь. Это работало в прошлом.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.