Инструменты пользователя

Инструменты сайта


articles:rodionov_myowngame

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
articles:rodionov_myowngame [2020-02-25 15:44]
GreyWolf [Ссылки]
articles:rodionov_myowngame [2024-03-07 11:15] (текущий)
GreyWolf
Строка 39: Строка 39:
   * игра должна быть популярной длительное время, так как стоимость игрового автомата выше стоимости персонального компьютера,​ а частая смена работающих в нем программ обычно не предусматривается.   * игра должна быть популярной длительное время, так как стоимость игрового автомата выше стоимости персонального компьютера,​ а частая смена работающих в нем программ обычно не предусматривается.
  
-Некоторые автоматы выпускаются с управлением,​ рассчитанным только для какойлибо конкретной игры, например,​ кабина автомобиля или самолёта с имитатором наклона кабины,​ штурвалом,​ педалями и тремя экранами,​ расположенными панорамно. ​+Некоторые автоматы выпускаются с управлением,​ рассчитанным только для какойлибо конкретной игры, например,​ кабина автомобиля или самолёта с имитатором наклона кабины,​ штурвалом,​ педалями и тремя экранами,​ расположенными панорамно. ​
  
-Чаще всего, перед тем как оказаться в игровом автомате,​ базовая версия программы проходит «обкатку» в качестве игры для домашнего пользования,​ и только имея устойчивый высокий рейтинг в компьютерных журналах и пройдя специальную экспертизу фирмизготовителей игровых автоматов,​ игра попадает туда, куда (возможно) и предназначалась первоначально. Окончательный вариант игры (то есть уже для автомата) обычно обладает более изощрённой графикой,​ звуком и другими эффектами,​ которые отсутствуют в базовом варианте игры для персональных компьютеров.+Чаще всего, перед тем как оказаться в игровом автомате,​ базовая версия программы проходит «обкатку» в качестве игры для домашнего пользования,​ и только имея устойчивый высокий рейтинг в компьютерных журналах и пройдя специальную экспертизу фирмизготовителей игровых автоматов,​ игра попадает туда, куда (возможно) и предназначалась первоначально. Окончательный вариант игры (то есть уже для автомата) обычно обладает более изощрённой графикой,​ звуком и другими эффектами,​ которые отсутствуют в базовом варианте игры для персональных компьютеров.
  
-Однако фирмыизготовители игровых автоматов разрабатывают и свои собственные специальные игры (часто вместе с уникальным оборудованием для них), которые не встречаются на персональных компьютерах и существуют только в версиях для игровых автоматов. К классу игр для игровых автоматов относятся,​ в первую очередь,​ так называемые «аркадианские» игры (Arcadian games), в которых приходится много стрелять из бластеров,​ пушек, сражаться различными способами со всевозможными врагами или спасаться от разнообразных монстров,​ пытающихся вас съесть. Действие может разворачиваться в любом времени или месте или вообще неизвестно где и когда. Цель всегда благородна:​ спасти когото (но, в первую очередь,​ самого себя), победить врага, пытающегося завоевать,​ разрушить,​ съесть и пр.+Однако фирмыизготовители игровых автоматов разрабатывают и свои собственные специальные игры (часто вместе с уникальным оборудованием для них), которые не встречаются на персональных компьютерах и существуют только в версиях для игровых автоматов. К классу игр для игровых автоматов относятся,​ в первую очередь,​ так называемые «аркадианские» игры (Arcadian games), в которых приходится много стрелять из бластеров,​ пушек, сражаться различными способами со всевозможными врагами или спасаться от разнообразных монстров,​ пытающихся вас съесть. Действие может разворачиваться в любом времени или месте или вообще неизвестно где и когда. Цель всегда благородна:​ спасти когото (но, в первую очередь,​ самого себя), победить врага, пытающегося завоевать,​ разрушить,​ съесть и пр.
  
 Игры этого класса могут быть выполнены с использованием великолепной графики,​ обладать прекрасным музыкальным и речевым сопровождением и выглядеть почти как художественный фильм, но при этом все равно являться играми,​ где надо все время «спасаться» и «побеждать»,​ причём в том темпе, который диктует компьютер. Игры этого класса могут быть выполнены с использованием великолепной графики,​ обладать прекрасным музыкальным и речевым сопровождением и выглядеть почти как художественный фильм, но при этом все равно являться играми,​ где надо все время «спасаться» и «побеждать»,​ причём в том темпе, который диктует компьютер.
Строка 49: Строка 49:
 Во вторую очередь,​ я отношу к классу «игр для игровых автоматов» абстрактные игры типа Pacman и Tetris, которые,​ тем не менее, подчиняясь «закону игрового автомата»,​ постепенно уменьшают время на обдумывание ситуации и сводят время реакции играющего к времени опроса компьютером органов управления игрой. Темп игры здесь также диктуется компьютером. Когда время реакции опытного играющего становится соизмеримым с временем опроса органов управления игровой программой,​ компьютер начинает реализовывать свою собственную выигрышную стратегию в ущерб приоритетности выполнения команд игрока. Во вторую очередь,​ я отношу к классу «игр для игровых автоматов» абстрактные игры типа Pacman и Tetris, которые,​ тем не менее, подчиняясь «закону игрового автомата»,​ постепенно уменьшают время на обдумывание ситуации и сводят время реакции играющего к времени опроса компьютером органов управления игрой. Темп игры здесь также диктуется компьютером. Когда время реакции опытного играющего становится соизмеримым с временем опроса органов управления игровой программой,​ компьютер начинает реализовывать свою собственную выигрышную стратегию в ущерб приоритетности выполнения команд игрока.
  
-Наконец,​ среди игр для игровых автоматов попадаются высококачественные трёхмерные тренажёры (в частности,​ уже упоминавшиеся автомобили и самолёты),​ требующие,​ в отличие от предыдущих игр, высокопроизводительных центрального и видеопроцессоров,​ специального оборудования и органов управления. Обычно они в меньшей степени подчинены стратегии скорейшего «выбрасывания» игрока,​ так как требуют более продолжительного освоения. Но это скорее исключение,​ чем правило. Постоянный спрос на такие игры поддерживается в основном изза того, что они трудно воспроизводимы на обычных персональных компьютерах с недорогими графическими картами и стандартными периферийными устройствами управления.+Наконец,​ среди игр для игровых автоматов попадаются высококачественные трёхмерные тренажёры (в частности,​ уже упоминавшиеся автомобили и самолёты),​ требующие,​ в отличие от предыдущих игр, высокопроизводительных центрального и видеопроцессоров,​ специального оборудования и органов управления. Обычно они в меньшей степени подчинены стратегии скорейшего «выбрасывания» игрока,​ так как требуют более продолжительного освоения. Но это скорее исключение,​ чем правило. Постоянный спрос на такие игры поддерживается в основном изза того, что они трудно воспроизводимы на обычных персональных компьютерах с недорогими графическими картами и стандартными периферийными устройствами управления.
  
-Таким образом,​ игры для игровых автоматов (независимо от того, реализована игра действительно на игровом автомате или на универсальном компьютере) характеризуются тем, чти доминантой в них является возрастающие темп и сложность игры, которые постоянно диктуются компьютером. При этом вся воля и все умение игрока подчиняются однойединственной цели — «как можно дольше продержаться».+Таким образом,​ игры для игровых автоматов (независимо от того, реализована игра действительно на игровом автомате или на универсальном компьютере) характеризуются тем, чти доминантой в них является возрастающие темп и сложность игры, которые постоянно диктуются компьютером. При этом вся воля и все умение игрока подчиняются однойединственной цели — «как можно дольше продержаться».
  
 Время для обдумывания и выбора стратегии и тактики игры практически отсутствует,​ но оно на самом деле и не требуется,​ так как каждая ситуация жёстко «зашита» в самой игре и в точности повторяет сама себя при повторении игры с самого начала. Помочь играющему может лишь одно — опыт преодоления предыдущих стадий при многократных попытках доиграть в такую игру до конца. Время для обдумывания и выбора стратегии и тактики игры практически отсутствует,​ но оно на самом деле и не требуется,​ так как каждая ситуация жёстко «зашита» в самой игре и в точности повторяет сама себя при повторении игры с самого начала. Помочь играющему может лишь одно — опыт преодоления предыдущих стадий при многократных попытках доиграть в такую игру до конца.
Строка 75: Строка 75:
 Интересным подклассом в классе «добрых» игр являются различные «стратегические» игры (Strategy Games), из самого названия которых уже следует,​ что играть в них надо не торопясь и хорошо продумывая свою собственную стратегию. Примером могут служить стратегические планы ведения войн, разработки экономической политики и др. Интересным подклассом в классе «добрых» игр являются различные «стратегические» игры (Strategy Games), из самого названия которых уже следует,​ что играть в них надо не торопясь и хорошо продумывая свою собственную стратегию. Примером могут служить стратегические планы ведения войн, разработки экономической политики и др.
  
-«Симуляции» (Simulations) включают в себя моделирование как относительно небольших объектов (катеров,​ подводных лодок, самолетов,​ космических кораблей),​ так и более крупных (отдельных предприятий,​ городов,​ стран, планет,​ а также целых планетных и звёздных систем). Во всех случаях играющему предоставляется возможность добиваться какихлибо целей путём определённых воздействий на различные объекты и подсистемы,​ обладающие сложным поведением,​ и наблюдать за их реакцией в ответ на такие воздействия. Эти игры также обычно требуют к себе внимательного и вдумчивого отношения и чаще всего попадают в класс «добрых».+«Симуляции» (Simulations) включают в себя моделирование как относительно небольших объектов (катеров,​ подводных лодок, самолетов,​ космических кораблей),​ так и более крупных (отдельных предприятий,​ городов,​ стран, планет,​ а также целых планетных и звёздных систем). Во всех случаях играющему предоставляется возможность добиваться какихлибо целей путём определённых воздействий на различные объекты и подсистемы,​ обладающие сложным поведением,​ и наблюдать за их реакцией в ответ на такие воздействия. Эти игры также обычно требуют к себе внимательного и вдумчивого отношения и чаще всего попадают в класс «добрых».
  
-«Спортивные» игры (Sport Games) часто требуют хорошей реакции и быстроты действий играющего,​ поэтому оказываются в зависимости от реализации и среди «добрых» и среди «злых» игр. Примерами могут служить всевозможные «олимпиады»,​ «многоборья»,​ не слишком сложные «авто— и моторалли»,​ «горные лыжи», «теннис»,​ «гольф» и др.+«Спортивные» игры (Sport Games) часто требуют хорошей реакции и быстроты действий играющего,​ поэтому оказываются в зависимости от реализации и среди «добрых» и среди «злых» игр. Примерами могут служить всевозможные «олимпиады»,​ «многоборья»,​ не слишком сложные «авто– и моторалли»,​ «горные лыжи», «теннис»,​ «гольф» и др.
  
 Компьютерные реализации традиционных настольных игр (Board Games) чаще всего принадлежат к классу «добрых» (шахматы,​ го и т.п.). Карточные игры в зависимости от степени сложности и конкретной реализации могут попадать и в «добрый»,​ и в «злой» классы. Компьютерные реализации традиционных настольных игр (Board Games) чаще всего принадлежат к классу «добрых» (шахматы,​ го и т.п.). Карточные игры в зависимости от степени сложности и конкретной реализации могут попадать и в «добрый»,​ и в «злой» классы.
Строка 87: Строка 87:
 Уже упоминавшиеся «аркадианские» игры практически полностью относятся к классу «злых». Уже упоминавшиеся «аркадианские» игры практически полностью относятся к классу «злых».
  
-Обучающие игры (Learning Games) могут оказаться в любом из приведённых выше типовых классов,​ но при этом они преследуют конкретную цель — научить играющего чемулибо полезному:​ быстрому счету, чтению электронных схем или дорожных знаков,​ иностранному языку, печатанию на машинке,​ оптимальному взаимодействию с деловыми партнёрами или учреждениями и пр. Конечно же, почти все обучающие игры принадлежат к классу «добрых»,​ так как предполагают вдумчивое и целенаправленное использование их для обучения. Отдельный подкласс обучающих игр образуют «тренажёры»,​ выполняемые чаще всего в типовом классе «симуляции».+Обучающие игры (Learning Games) могут оказаться в любом из приведённых выше типовых классов,​ но при этом они преследуют конкретную цель — научить играющего чемулибо полезному:​ быстрому счету, чтению электронных схем или дорожных знаков,​ иностранному языку, печатанию на машинке,​ оптимальному взаимодействию с деловыми партнёрами или учреждениями и пр. Конечно же, почти все обучающие игры принадлежат к классу «добрых»,​ так как предполагают вдумчивое и целенаправленное использование их для обучения. Отдельный подкласс обучающих игр образуют «тренажёры»,​ выполняемые чаще всего в типовом классе «симуляции».
  
 Приведённая выше классификация не претендует на полноту,​ но позволяет легче ориентироваться в новых, появляющихся на рынке играх. Тем не менее, следует ещё раз обратить внимание читателя на то, что в современных сложных компьютерных играх часто соседствуют и могут пересекаться элементы игр разных классов,​ что затрудняет их точную классификацию. Приведённая выше классификация не претендует на полноту,​ но позволяет легче ориентироваться в новых, появляющихся на рынке играх. Тем не менее, следует ещё раз обратить внимание читателя на то, что в современных сложных компьютерных играх часто соседствуют и могут пересекаться элементы игр разных классов,​ что затрудняет их точную классификацию.
Строка 108: Строка 108:
  
 Это противоречие может смягчаться или отсутствовать в следующих случаях:​ Это противоречие может смягчаться или отсутствовать в следующих случаях:​
-  * если разработчик данной игры не относится к разработке компьютерных игр как к источнику постоянного заработка или, вообще,​ не рассматривает данную игру в качестве коммерческого продукта (разработчик—непрофессионал) +  * если разработчик данной игры не относится к разработке компьютерных игр как к источнику постоянного заработка или, вообще,​ не рассматривает данную игру в качестве коммерческого продукта (разработчик—непрофессионал) 
-  * если разработчикпрофессионал делает игровую программу в первую очередь "​для самого себя"​.+  * если разработчикпрофессионал делает игровую программу в первую очередь "​для самого себя"​.
  
-Первая ситуация (разработчикнепрофессионал) встречается довольно часто. Каждый из нас может ознакомиться с образцами таких любительских игр, просматривая различные public domain (программы для бесплатного публичного копирования и использования). Обычно такие игры обладают маловыразительными графикой и звуковым сопровождением,​ недостаточно удобны в управлении,​ а иногда обладают и непонятным сценарием.+Первая ситуация (разработчикнепрофессионал) встречается довольно часто. Каждый из нас может ознакомиться с образцами таких любительских игр, просматривая различные public domain (программы для бесплатного публичного копирования и использования). Обычно такие игры обладают маловыразительными графикой и звуковым сопровождением,​ недостаточно удобны в управлении,​ а иногда обладают и непонятным сценарием.
  
-Вторая категория игр (разработчикпрофессионал делает игру для себя) встречается сегодня крайне редко. Мне известно всего лишь несколько таких игр. Эти игры отличаются прежде всего тем, что, обладая великолепными художественными и алгоритмическими решениями,​ они при каждом новом запуске предлагают играющему достаточно богатую,​ но несколько отличную от предыдущей игровую вселенную. При этом детали этой вселенной каждый раз немного изменяются случайным образом. Это очень точно взвешенное соотношение детерминизма и случайности иногда может создавать такое сочетание разнообразия и неожиданности,​ которое способно сделать игру практически «бессмертной». Однако соблюсти этот тонкий баланс,​ придающий игре «бессмертные» свойства в глазах не только автора,​ но других играющих,​ зачастую бывает нелегко и профессионалу,​ так как большинство игр со сложной и интересной игровой вселенной весьма склонны к вырождению либо в слишком запутанные и чересчур сложные для освоения другими игроками,​ либо в «хаотические».+Вторая категория игр (разработчикпрофессионал делает игру для себя) встречается сегодня крайне редко. Мне известно всего лишь несколько таких игр. Эти игры отличаются прежде всего тем, что, обладая великолепными художественными и алгоритмическими решениями,​ они при каждом новом запуске предлагают играющему достаточно богатую,​ но несколько отличную от предыдущей игровую вселенную. При этом детали этой вселенной каждый раз немного изменяются случайным образом. Это очень точно взвешенное соотношение детерминизма и случайности иногда может создавать такое сочетание разнообразия и неожиданности,​ которое способно сделать игру практически «бессмертной». Однако соблюсти этот тонкий баланс,​ придающий игре «бессмертные» свойства в глазах не только автора,​ но других играющих,​ зачастую бывает нелегко и профессионалу,​ так как большинство игр со сложной и интересной игровой вселенной весьма склонны к вырождению либо в слишком запутанные и чересчур сложные для освоения другими игроками,​ либо в «хаотические».
  
 Вообще говоря,​ разработка игровых вселенных связана,​ на мой взгляд,​ с очень серьёзными философскими и религиозными проблемами,​ но об этом я скажу несколько позже. А пока зададим себе вопрос:​ Вообще говоря,​ разработка игровых вселенных связана,​ на мой взгляд,​ с очень серьёзными философскими и религиозными проблемами,​ но об этом я скажу несколько позже. А пока зададим себе вопрос:​
Строка 146: Строка 146:
 Начнём с того, что, кроме поведения,​ компьютерная программа обладает ещё одним свойством «живого» — способностью к размножению. Чаще всего этот процесс совершается опосредованно и при участии человека,​ который размножает объектный код программы при перезаписи её с одних носителей на другие,​ но в случае распространения исходных текстов программы возрастает и число её «мутаций» — видоизменений,​ выполненных другими программистами. Начнём с того, что, кроме поведения,​ компьютерная программа обладает ещё одним свойством «живого» — способностью к размножению. Чаще всего этот процесс совершается опосредованно и при участии человека,​ который размножает объектный код программы при перезаписи её с одних носителей на другие,​ но в случае распространения исходных текстов программы возрастает и число её «мутаций» — видоизменений,​ выполненных другими программистами.
  
-Существуют и саморазмножающиеся программы,​ хорошо известным примером которых является печально знаменитый класс программвирусов.+Существуют и саморазмножающиеся программы,​ хорошо известным примером которых является печально знаменитый класс программвирусов.
  
 Большинство программ подвержены естественному отбору (при помощи человека),​ в котором лучшие программы заставляют «вымирать» более слабых конкурентов. При этом «выжившие» часто задают начальный уровень качества и определяют ключевые идеи, широко используемые в дальнейшем. Большинство программ подвержены естественному отбору (при помощи человека),​ в котором лучшие программы заставляют «вымирать» более слабых конкурентов. При этом «выжившие» часто задают начальный уровень качества и определяют ключевые идеи, широко используемые в дальнейшем.
Строка 158: Строка 158:
 Не зря в среде программистов бытует мудрость:​ «В каждой большой программе существуют как минимум три ошибки. После устранения любой из них в ней остаются или появляются ещё как минимум три. И этот процесс продолжается до самого окончания жизни программы». Не зря в среде программистов бытует мудрость:​ «В каждой большой программе существуют как минимум три ошибки. После устранения любой из них в ней остаются или появляются ещё как минимум три. И этот процесс продолжается до самого окончания жизни программы».
  
-Из всего этого видно, насколько сложной и похожей на «живой» объект может быть компьютерная программа,​ которая порождается разработчиками,​ и насколько может быть трудно,​ а порой просто невозможно предсказать ее дальнейшую жизнь и поведение,​ особенно после «отчуждения» от создателя.+Из всего этого видно, насколько сложной и похожей на «живой» объект может быть компьютерная программа,​ которая порождается разработчиками,​ и насколько может быть трудно,​ а порой просто невозможно предсказать её дальнейшую жизнь и поведение,​ особенно после «отчуждения» от создателя.
  
 В этом месте я хотел бы проиллюстрировать вышесказанное примером длительной (десятилетней) разработки программ для большой информационной системы,​ базировавшейся на многомашинном комплексе. Участвуя в этом проекте в качестве разработчика,​ в том числе последние пять лет руководя всей разработкой и одновременно занимаясь практическим программированием,​ я детально представлял себе устройство всей системы в целом. В этом месте я хотел бы проиллюстрировать вышесказанное примером длительной (десятилетней) разработки программ для большой информационной системы,​ базировавшейся на многомашинном комплексе. Участвуя в этом проекте в качестве разработчика,​ в том числе последние пять лет руководя всей разработкой и одновременно занимаясь практическим программированием,​ я детально представлял себе устройство всей системы в целом.
  
-По мере возрастания числа выполняемых функций система росла и развивалась в заранее спланированных для неё рамках. Отдельные подсистемы,​ как это обычно бывает,​ проходили различные этапы приёмки,​ передавались сначала в опытную,​ а затем в промышленную эксплуатацию. Разработчиками осуществлялся авторский надзор и сопровождение,​ замеченные ошибки в программах устранялись,​ и хорошо отлаженные части системы постепенно «отчуждались» от разработчиков. Они начинали взаимодействовать друг с другом,​ с персоналом,​ эксплуатировавшим систему,​ и с ее пользователями,​ работавшими,​ в частности,​ с удалённых терминалов по линиям связи.+По мере возрастания числа выполняемых функций система росла и развивалась в заранее спланированных для неё рамках. Отдельные подсистемы,​ как это обычно бывает,​ проходили различные этапы приёмки,​ передавались сначала в опытную,​ а затем в промышленную эксплуатацию. Разработчиками осуществлялся авторский надзор и сопровождение,​ замеченные ошибки в программах устранялись,​ и хорошо отлаженные части системы постепенно «отчуждались» от разработчиков. Они начинали взаимодействовать друг с другом,​ с персоналом,​ эксплуатировавшим систему,​ и с её пользователями,​ работавшими,​ в частности,​ с удалённых терминалов по линиям связи.
  
 Надо сказать,​ что в период интенсивного авторского сопровождения программ я не задумывался над тем, "​что же такое мы создаём?"​ с точки зрения его подобия «живому организму». Но когда стало ясно, что значительная часть системы уже «живёт» своей собственной,​ независимой от нас жизнью и авторы уже не могут существенно влиять на эту «жизнь»,​ не разрушая систему,​ я испытал известное потрясение — продукт был «отчуждён» и жил самостоятельно! Причём,​ сохранность этой «жизни» гарантировалась заинтересованностью в нормальном функционировании системы множества других людей, пользующихся нашим «творением»... И чем больше проходило времени с момента «отчуждения»,​ тем сильнее становилось ощущение самостоятельной «жизни» системы. Надо сказать,​ что в период интенсивного авторского сопровождения программ я не задумывался над тем, "​что же такое мы создаём?"​ с точки зрения его подобия «живому организму». Но когда стало ясно, что значительная часть системы уже «живёт» своей собственной,​ независимой от нас жизнью и авторы уже не могут существенно влиять на эту «жизнь»,​ не разрушая систему,​ я испытал известное потрясение — продукт был «отчуждён» и жил самостоятельно! Причём,​ сохранность этой «жизни» гарантировалась заинтересованностью в нормальном функционировании системы множества других людей, пользующихся нашим «творением»... И чем больше проходило времени с момента «отчуждения»,​ тем сильнее становилось ощущение самостоятельной «жизни» системы.
  
-Думаю, что это чувство в той или иной степени знакомо почти всем программистам,​ продуктами труда которых пользуются другие люди. Подозреваю также, что это же чувство заставляет некоторых молодых программистов слишком гордиться своим умением написать небольшую программу и изза этого несколько свысока относиться к окружающим.+Думаю, что это чувство в той или иной степени знакомо почти всем программистам,​ продуктами труда которых пользуются другие люди. Подозреваю также, что это же чувство заставляет некоторых молодых программистов слишком гордиться своим умением написать небольшую программу и изза этого несколько свысока относиться к окружающим.
  
 Однако с опытом рано или поздно приходит понимание того, насколько превосходит любого из нас великий программист,​ сотворивший нашу Вселенную. Но вернёмся к компьютерным играм. Однако с опытом рано или поздно приходит понимание того, насколько превосходит любого из нас великий программист,​ сотворивший нашу Вселенную. Но вернёмся к компьютерным играм.
Строка 182: Строка 182:
 Много лет назад на «больших» компьютерах,​ занимающих как правило целый машинный зал, был очень популярен класс игр под названием «Star Trek» («Звёздный Путь»). Игры с таким названием писались разными авторами и для разных компьютеров,​ но, в основном,​ под влиянием одного и того же одноимённого телевизионного сериала,​ пользовавшегося большой популярностью в те годы (как, впрочем,​ пользуется заслуженной популярностью этот же возрождённый космический сериал и в наши дни). Действие почти всегда происходило в далёких звёздных мирах, где космический корабль с большой командой на борту путешествовал среди звёзд, открывал новые миры, сражался с вражеским звёздными флотилиями,​ защищал свои Звёздные Базы, заправлялся энергией и ремонтировался,​ снова путешествовал и сражался и т.д. Много лет назад на «больших» компьютерах,​ занимающих как правило целый машинный зал, был очень популярен класс игр под названием «Star Trek» («Звёздный Путь»). Игры с таким названием писались разными авторами и для разных компьютеров,​ но, в основном,​ под влиянием одного и того же одноимённого телевизионного сериала,​ пользовавшегося большой популярностью в те годы (как, впрочем,​ пользуется заслуженной популярностью этот же возрождённый космический сериал и в наши дни). Действие почти всегда происходило в далёких звёздных мирах, где космический корабль с большой командой на борту путешествовал среди звёзд, открывал новые миры, сражался с вражеским звёздными флотилиями,​ защищал свои Звёздные Базы, заправлялся энергией и ремонтировался,​ снова путешествовал и сражался и т.д.
  
-Конечно,​ компьютерная графика в те времена была достаточно несовершенна и в лучшем случае предоставляла возможность работать с символами на алфавитноцифровых дисплеях,​ но все равно «Star Trek» захватывал воображение,​ и многие из нас ностальгически вспоминают о нем до сих пор. А чего стоили «разборы полётов» с разгорячёнными после игры коллегамипрограммистами по дороге домой в метро! Соседи по вагону удивлялись,​ слыша чтонибудь вроде: «...и как только я вышел из гиперпространства...»+Конечно,​ компьютерная графика в те времена была достаточно несовершенна и в лучшем случае предоставляла возможность работать с символами на алфавитноцифровых дисплеях,​ но все равно «Star Trek» захватывал воображение,​ и многие из нас ностальгически вспоминают о нем до сих пор. А чего стоили «разборы полётов» с разгорячёнными после игры коллегамипрограммистами по дороге домой в метро! Соседи по вагону удивлялись,​ слыша чтонибудь вроде: «...и как только я вышел из гиперпространства...»
  
 Романтика звёздных сражений настолько увлекала некоторых настоящих мужчин (программистов),​ что в определённый момент многие из нас начинали мечтать о своей собственной игре «Star Trek», которая была бы лучше уже существующей. Не всем удавалось воплотить эту мечту в реально работающую новую программу,​ но многие из нас с той поры оказались «заражёнными» компьютерными играми и до сих пор ищут на персональных компьютерах свой «игровой идеал» — современную версию старой игры «Star Trek». Романтика звёздных сражений настолько увлекала некоторых настоящих мужчин (программистов),​ что в определённый момент многие из нас начинали мечтать о своей собственной игре «Star Trek», которая была бы лучше уже существующей. Не всем удавалось воплотить эту мечту в реально работающую новую программу,​ но многие из нас с той поры оказались «заражёнными» компьютерными играми и до сих пор ищут на персональных компьютерах свой «игровой идеал» — современную версию старой игры «Star Trek».
Строка 188: Строка 188:
 Не устоял перед искушением написать свой собственный «Star Trek» в своё время и я — и он оказался моей первой игровой программой,​ на которой я ощутил всю необыкновенную прелесть такой работы. Не устоял перед искушением написать свой собственный «Star Trek» в своё время и я — и он оказался моей первой игровой программой,​ на которой я ощутил всю необыкновенную прелесть такой работы.
  
-Дело в том, что эту игру я разрабатывал в первую очередь для самого себя. Все, что мне приходило в голову и хотелось видеть в готовой игре, можно было попытаться запрограммировать. Один из постоянно доступных мне компьютеров был очень неплох — НР3000. Памяти,​ по тем временам,​ было более чем достаточно,​ быстродействия — тоже (к тому же я имел статус менеджера системы). Единственным ограничением,​ накладываемым на эту работу,​ являлось моё время, свободное от основной работы. Но программисту ли привыкать работать по ночам или съедать обед из термоса в выходные?​+Дело в том, что эту игру я разрабатывал в первую очередь для самого себя. Все, что мне приходило в голову и хотелось видеть в готовой игре, можно было попытаться запрограммировать. Один из постоянно доступных мне компьютеров был очень неплох — НР-3000. Памяти,​ по тем временам,​ было более чем достаточно,​ быстродействия — тоже (к тому же я имел статус менеджера системы). Единственным ограничением,​ накладываемым на эту работу,​ являлось моё время, свободное от основной работы. Но программисту ли привыкать работать по ночам или съедать обед из термоса в выходные?​
  
 Одной из самых существенных концепций моей игры являлось вероятностное поведение объектов игры и всей компьютерной вселенной в целом. Это гарантировало невозможность точного предсказания дальнейшего развития событий в любой ситуации даже для автора,​ что и делало игру для меня наиболее привлекательной. Программа имела специальный генерационный файл данных,​ содержащий около 500 параметров,​ относящихся к различным объектам игры. Одной из самых существенных концепций моей игры являлось вероятностное поведение объектов игры и всей компьютерной вселенной в целом. Это гарантировало невозможность точного предсказания дальнейшего развития событий в любой ситуации даже для автора,​ что и делало игру для меня наиболее привлекательной. Программа имела специальный генерационный файл данных,​ содержащий около 500 параметров,​ относящихся к различным объектам игры.
Строка 194: Строка 194:
 Звезды и планетные системы зарождались и умирали,​ подчиняясь сложным параметрическим законам с вероятностными критериями,​ сверхновые взрывались в определённых ситуациях и с предварительно заданной вероятностью,​ оборудование космического корабля и поведение его экипажа описывалось очень большим количеством параметров и, соответственно,​ могло оказаться совершенно различным в сходных ситуациях. Враги, обладая очень сложной и в целом детерминированной стратегией поведения,​ могли отклоняться от неё в рамках разрешённой вероятности их поведения. Каждый противник,​ таким образом,​ обладал своими склонностями и характером. Одни были агрессивны,​ другие — трусливы,​ третьи — склонны к компромиссам,​ переговорам и т.д. Если им удавалось договориться друг с другом,​ они могли в разной степени объединять свои усилия в борьбе со мной или наоборот — начать свою собственную внутреннюю войну. Враги рождались,​ жили и умирали по своим законам,​ нашу Галактику иногда посещали корабли из других галактик,​ команды которых могли присоединиться,​ в зависимости от обстоятельств,​ к той или иной враждующей стороне. Звезды и планетные системы зарождались и умирали,​ подчиняясь сложным параметрическим законам с вероятностными критериями,​ сверхновые взрывались в определённых ситуациях и с предварительно заданной вероятностью,​ оборудование космического корабля и поведение его экипажа описывалось очень большим количеством параметров и, соответственно,​ могло оказаться совершенно различным в сходных ситуациях. Враги, обладая очень сложной и в целом детерминированной стратегией поведения,​ могли отклоняться от неё в рамках разрешённой вероятности их поведения. Каждый противник,​ таким образом,​ обладал своими склонностями и характером. Одни были агрессивны,​ другие — трусливы,​ третьи — склонны к компромиссам,​ переговорам и т.д. Если им удавалось договориться друг с другом,​ они могли в разной степени объединять свои усилия в борьбе со мной или наоборот — начать свою собственную внутреннюю войну. Враги рождались,​ жили и умирали по своим законам,​ нашу Галактику иногда посещали корабли из других галактик,​ команды которых могли присоединиться,​ в зависимости от обстоятельств,​ к той или иной враждующей стороне.
  
-Наконец,​ на какомто этапе разработки,​ игру стало возможно предоставлять самой себе на длительный промежуток времени,​ например,​ на ночь, и утром узнавать,​ к чему привело развитие событий в отсутствие автора. Если появлялось желание,​ можно было принять участие в игре или оставаться просто наблюдателем. (На нашем НР3000 игра без участия человека выполнялась как задача с невысоким приоритетом,​ никому особенно не мешая). Примерно в это же время я решил добавить в игру возможность одновременной работы с нескольких терминалов для разных участников;​ и на этом этапе (примерно через год после начала работы) разработка игры, собственно,​ закончилась. Настало время наслаждаться своим "​творением"​ и иногда отдыхать за дисплеем компьютера,​ а также можно было подвести некоторые итоги.+Наконец,​ на какомто этапе разработки,​ игру стало возможно предоставлять самой себе на длительный промежуток времени,​ например,​ на ночь, и утром узнавать,​ к чему привело развитие событий в отсутствие автора. Если появлялось желание,​ можно было принять участие в игре или оставаться просто наблюдателем. (На нашем НР-3000 игра без участия человека выполнялась как задача с невысоким приоритетом,​ никому особенно не мешая). Примерно в это же время я решил добавить в игру возможность одновременной работы с нескольких терминалов для разных участников;​ и на этом этапе (примерно через год после начала работы) разработка игры, собственно,​ закончилась. Настало время наслаждаться своим "​творением"​ и иногда отдыхать за дисплеем компьютера,​ а также можно было подвести некоторые итоги.
  
 Но именно в этот момент у меня появился мой первый персональный компьютер Yamaha MSX, обладавший цветной графикой и захвативший на длительное время все мои помыслы. Но именно в этот момент у меня появился мой первый персональный компьютер Yamaha MSX, обладавший цветной графикой и захвативший на длительное время все мои помыслы.
Строка 200: Строка 200:
 ====== Итоги разработки большой игры ====== ====== Итоги разработки большой игры ======
  
-Итоги разработки этой большой игры были подведены мной значительно позже и, честно говоря,​ обрадовали и даже немного испугали одновременно. Я был рад, что написал такую большую и сложную программу и выполнил задачу,​ которую перед собой поставил в полном объёме. Я гордился тем, что в очередной раз создал систему,​ способную к дальнейшему существованию без участия автора,​ и что моей игровой программой с удовольствием пользовались некоторые мои коллеги по работе. Но одновременно с этим я понял также и то, что на этот раз соприкоснулся с чемто большим,​ чем обычное проектирование компьютерной программы. И осмысливая этот неожиданный опыт, мне пришлось сделать некоторые выводы,​ не имеющие прямого отношения к программированию в общепринятом понимании этого слова.+Итоги разработки этой большой игры были подведены мной значительно позже и, честно говоря,​ обрадовали и даже немного испугали одновременно. Я был рад, что написал такую большую и сложную программу и выполнил задачу,​ которую перед собой поставил в полном объёме. Я гордился тем, что в очередной раз создал систему,​ способную к дальнейшему существованию без участия автора,​ и что моей игровой программой с удовольствием пользовались некоторые мои коллеги по работе. Но одновременно с этим я понял также и то, что на этот раз соприкоснулся с чемто большим,​ чем обычное проектирование компьютерной программы. И осмысливая этот неожиданный опыт, мне пришлось сделать некоторые выводы,​ не имеющие прямого отношения к программированию в общепринятом понимании этого слова.
  
-Вопервых,​ мне довелось на практике убедиться в справедливости концепции,​ носящей название «Лучший из миров». Суть этой философской и физической концепции,​ как известно,​ заключается в том, что мы живём в «лучшем из миров» в том смысле,​ что наша Вселенная является устойчивой в силу вполне определённого соотношения значений таких физических констант,​ как скорость света в пустоте,​ постоянная Планка,​ заряд электрона и др. Соответствующими теоретическими расчётами показано,​ что существует лишь очень небольшая область значений этих мировых констант,​ обеспечивающая устойчивость существования материи. И наша Вселенная принадлежит к этому множеству. В случае даже небольших отклонений значений этих констант в ту или иную сторону,​ материя начинает стремительно дезорганизовываться и превращается в хаос или, что то же самое, не может организоваться из первичного хаоса вовсе.+Вопервых,​ мне довелось на практике убедиться в справедливости концепции,​ носящей название «Лучший из миров». Суть этой философской и физической концепции,​ как известно,​ заключается в том, что мы живём в «лучшем из миров» в том смысле,​ что наша Вселенная является устойчивой в силу вполне определённого соотношения значений таких физических констант,​ как скорость света в пустоте,​ постоянная Планка,​ заряд электрона и др. Соответствующими теоретическими расчётами показано,​ что существует лишь очень небольшая область значений этих мировых констант,​ обеспечивающая устойчивость существования материи. И наша Вселенная принадлежит к этому множеству. В случае даже небольших отклонений значений этих констант в ту или иную сторону,​ материя начинает стремительно дезорганизовываться и превращается в хаос или, что то же самое, не может организоваться из первичного хаоса вовсе.
  
 Как я уже говорил,​ моя игра имела около пятисот параметров,​ определяющих её игровую вселенную,​ и правила поведения объектов,​ включая вероятностные характеристики отклонений параметров от их стандартных значений. В процессе проектирования и настройки игры с помощью этих параметров выяснилось,​ что возможные устойчивые игровые вселенные также занимают очень небольшой объем в многомерной области допустимых значений всех параметров. А при выходе одного или нескольких параметров за границы этого объёма игровая вселенная начинает стремительно деградировать и становится однородной и неинтересной для играющего. Например,​ сверхновые звезды вспыхивают слишком часто и сжигают все вокруг себя, новые звёздные системы зарождаются слишком редко или слишком часто, персонажи самоуничтожаются,​ вымирают или уничтожают друг друга в братоубийственных войнах,​ оборудование корабля становится слишком ненадёжно,​ команда корабля постоянно бунтует и плохо выполняет приказания или, наоборот,​ проявляет излишнюю самостоятельность и делает то, что делать совсем не надо... Перечисление можно легко продолжить. Таким образом,​ понятие «Лучший из миров» для данной игры приобрело сугубо практическое значение,​ и мне пришлось выбирать этот «Лучший из миров» аналитически,​ интуитивно,​ а также методом проб и ошибок в процессе настройки программы. Более того, стало особенно важно попасть в один из «Самых лучших миров» для того, чтобы игровая вселенная могла самостоятельно существовать без моего участия. Как я уже говорил,​ моя игра имела около пятисот параметров,​ определяющих её игровую вселенную,​ и правила поведения объектов,​ включая вероятностные характеристики отклонений параметров от их стандартных значений. В процессе проектирования и настройки игры с помощью этих параметров выяснилось,​ что возможные устойчивые игровые вселенные также занимают очень небольшой объем в многомерной области допустимых значений всех параметров. А при выходе одного или нескольких параметров за границы этого объёма игровая вселенная начинает стремительно деградировать и становится однородной и неинтересной для играющего. Например,​ сверхновые звезды вспыхивают слишком часто и сжигают все вокруг себя, новые звёздные системы зарождаются слишком редко или слишком часто, персонажи самоуничтожаются,​ вымирают или уничтожают друг друга в братоубийственных войнах,​ оборудование корабля становится слишком ненадёжно,​ команда корабля постоянно бунтует и плохо выполняет приказания или, наоборот,​ проявляет излишнюю самостоятельность и делает то, что делать совсем не надо... Перечисление можно легко продолжить. Таким образом,​ понятие «Лучший из миров» для данной игры приобрело сугубо практическое значение,​ и мне пришлось выбирать этот «Лучший из миров» аналитически,​ интуитивно,​ а также методом проб и ошибок в процессе настройки программы. Более того, стало особенно важно попасть в один из «Самых лучших миров» для того, чтобы игровая вселенная могла самостоятельно существовать без моего участия.
  
-Кроме того, постепенно развивая игру и наделяя её персонажей характерами с различными вероятностными характеристиками,​ я почемуто не задумывался о том, что, вообщето, ничто не мешало мне запрограммировать у них интерес к познанию окружающего их мира и даже способность к рефлексии. Те «существа»,​ которых я создавал,​ уже обладали некоторой,​ независимой от меня индивидуальностью. Они могли рождаться и умирать без моего вмешательства,​ имели свои собственные имена, которых я не знал до тех пор, пока не знакомился с каждым из них по отдельности,​ обладали достаточно сложным поведением,​ в большей или меньшей степени адекватным окружающему их миру, некоторым небольшим запасом слов и понятий (я с ними беседовал и иногда мог даже «убедить» в чемто), они объединялись в группы с общими интересами или, наоборот,​ враждовали друг с другом. В моей модели не хватало совсем немногого:​ их собственной заинтересованности в продолжении игры и осмысления ими в этой игре своей роли. Кроме того, хотя они и «догадывались» о моем существовании,​ но не могли целенаправленно задавать мне вопросы о том мире, в котором существуют,​ и получать от меня соответствующие ответы.+Кроме того, постепенно развивая игру и наделяя её персонажей характерами с различными вероятностными характеристиками,​ я почемуто не задумывался о том, что, вообщето, ничто не мешало мне запрограммировать у них интерес к познанию окружающего их мира и даже способность к рефлексии. Те «существа»,​ которых я создавал,​ уже обладали некоторой,​ независимой от меня индивидуальностью. Они могли рождаться и умирать без моего вмешательства,​ имели свои собственные имена, которых я не знал до тех пор, пока не знакомился с каждым из них по отдельности,​ обладали достаточно сложным поведением,​ в большей или меньшей степени адекватным окружающему их миру, некоторым небольшим запасом слов и понятий (я с ними беседовал и иногда мог даже «убедить» в чемто), они объединялись в группы с общими интересами или, наоборот,​ враждовали друг с другом. В моей модели не хватало совсем немногого:​ их собственной заинтересованности в продолжении игры и осмысления ими в этой игре своей роли. Кроме того, хотя они и «догадывались» о моем существовании,​ но не могли целенаправленно задавать мне вопросы о том мире, в котором существуют,​ и получать от меня соответствующие ответы.
  
-Когда я впервые задумался над этим, я уже, к сожалению,​ не имел доступа к тому компьютеру,​ на котором создавал эту игру. Поэтому я не имел и возможности попытаться дополнительно запрограммировать эти черты их «личности» и посмотреть,​ что же из этого получится. Однако,​ чисто теоретически,​ эта задача не представляется мне особенно сложной,​ так как ещё с очень давних времён у меня уже был опыт разработки обучаемых программ,​ синтезирующих связный русский текст с расширяемым и процессе обучения запасом понятий и оперирующих различными категориями (в том числе даже моральноэтическими). А развитый язык понятий — один из основных критериев степени развития интеллекта и знаний об окружающем мире!+Когда я впервые задумался над этим, я уже, к сожалению,​ не имел доступа к тому компьютеру,​ на котором создавал эту игру. Поэтому я не имел и возможности попытаться дополнительно запрограммировать эти черты их «личности» и посмотреть,​ что же из этого получится. Однако,​ чисто теоретически,​ эта задача не представляется мне особенно сложной,​ так как ещё с очень давних времён у меня уже был опыт разработки обучаемых программ,​ синтезирующих связный русский текст с расширяемым и процессе обучения запасом понятий и оперирующих различными категориями (в том числе даже моральноэтическими). А развитый язык понятий — один из основных критериев степени развития интеллекта и знаний об окружающем мире!
  
-Дальнейшие размышления по поводу того, во что могла бы превратиться моя игра, привели меня к некоторым неожиданным религиознофилософским аналогиям. Я задавал себе вопросы и пытался отвечать на них. Итак:+Дальнейшие размышления по поводу того, во что могла бы превратиться моя игра, привели меня к некоторым неожиданным религиознофилософским аналогиям. Я задавал себе вопросы и пытался отвечать на них. Итак:
   * Зачем я создавал эту программу?​ — Отчасти ради самого удовольствия от процесса её создания и предвкушения удовольствия от дальнейшей «игры» с ней. Отчасти для расширения разнообразия окружающего меня мира. Отчасти для удовлетворения чувства созидания,​ живущего в каждом человеке. Отчасти просто из любопытства. И ещё мне хотелось иметь возможность исследовать в деталях все время новый, постоянно обновляющийся мир игры, сталкиваясь порой с неожиданными явлениями в рамках предварительно определённых мной законов этого мира.   * Зачем я создавал эту программу?​ — Отчасти ради самого удовольствия от процесса её создания и предвкушения удовольствия от дальнейшей «игры» с ней. Отчасти для расширения разнообразия окружающего меня мира. Отчасти для удовлетворения чувства созидания,​ живущего в каждом человеке. Отчасти просто из любопытства. И ещё мне хотелось иметь возможность исследовать в деталях все время новый, постоянно обновляющийся мир игры, сталкиваясь порой с неожиданными явлениями в рамках предварительно определённых мной законов этого мира.
   * Почему я вынужден был искать для этой игры свой «Лучший из миров»?​ — Потому,​ что вырожденная игра, хаос мне неинтересны. Мне нравится уменьшать энтропию,​ идти от хаоса к упорядоченности.   * Почему я вынужден был искать для этой игры свой «Лучший из миров»?​ — Потому,​ что вырожденная игра, хаос мне неинтересны. Мне нравится уменьшать энтропию,​ идти от хаоса к упорядоченности.
Строка 221: Строка 221:
 Здесь можно было бы поставить точку. Но просится многозначительное многоточие... Здесь можно было бы поставить точку. Но просится многозначительное многоточие...
  
-Могу добавить,​ что разработка и анализ этой игры в своё время так сильно повлияли на моё мировоззрение,​ как не смогли повлиять до этого никакие теоретические и религиозные концепции. Согласитесь,​ одно дело — рассуждать о чемто схоластически,​ а другое дело — попробовать самому.+Могу добавить,​ что разработка и анализ этой игры в своё время так сильно повлияли на моё мировоззрение,​ как не смогли повлиять до этого никакие теоретические и религиозные концепции. Согласитесь,​ одно дело — рассуждать о чемто схоластически,​ а другое дело — попробовать самому.
  
 ====== О технологии разработки игровых программ ====== ====== О технологии разработки игровых программ ======
Строка 239: Строка 239:
 Итак, что же должно быть на вашем «верстаке»?​ Итак, что же должно быть на вашем «верстаке»?​
  
-1. Удобный редактор текстов для написания сценария,​ подготовки документации и разработки исходных текстов программ. +  - Удобный редактор текстов для написания сценария,​ подготовки документации и разработки исходных текстов программ. 
- +  ​- ​Мощный графический редактор для подготовки фоновых задних планов и анимационных объектов. Если планируется использование трёхмерной графики,​ то потребуется и ЗDредактор. Неплохо также иметь сканер,​ видеокамеру и устройство ввода в компьютер видеоинформации. Форматы хранения изображений в файлах на дисках должны поддерживаться удобными и простыми библиотечными функциями для последующей загрузки графики в вашу программу. Если вы планируете использовать в игре видео, может быть, вам придётся снимать и монтировать целые фрагменты видеофильмов,​ чтобы потом показывать их с помощью вашей программы. 
-2. Мощный графический редактор для подготовки фоновых задних планов и анимационных объектов. Если планируется использование трёхмерной графики,​ то потребуется и ЗDредактор. Неплохо также иметь сканер,​ видеокамеру и устройство ввода в компьютер видеоинформации. Форматы хранения изображений в файлах на дисках должны поддерживаться удобными и простыми библиотечными функциями для последующей загрузки графики в вашу программу. Если вы планируете использовать в игре видео, может быть, вам придётся снимать и монтировать целые фрагменты видеофильмов,​ чтобы потом показывать их с помощью вашей программы. +  ​- ​Удобный музыкальный редактор,​ работающий с той музыкальной аппаратурой,​ которую вы рассчитываете использовать в своей игре. Так же, как и для графики,​ вам должны быть доступны соответствующие библиотечные функции для удобного проигрывания созданной музыки из вашей программы. ​\\ Хорошо,​ когда музыка,​ используемая в игре, мелодична и удачно аранжирована. Поэтому,​ если вы не уверены в собственных силах, попросите написать музыку для вашей игры профессионального музыканта. В противном случае ваша игра может потерять привлекательность даже при интересном сценарии и хорошо продуманном алгоритме. (То же самое, впрочем,​ относится и к графике. ) 
- +  ​- ​Необходим компилятор с языка программирования,​ на котором вам удобнее всего излагать свои мысли, и, может быть, ассемблер. С точки зрения компактности письма и обозримости текста программы лучше всего писать и отлаживать свои программы на языках высокого уровня,​ но, если эффективность порождаемого компилятором кода оказывается недостаточной,​ отдельные (наиболее критичные по быстродействию или использованию памяти) функции придётся переписывать на ассемблере. ​\\ Для себя, например,​ я сделал выбор языка программирования несколько лет назад, остановившись на языке Си. Перед этим я писал программы на более чем десятке разных языков и ассемблеров на различных компьютерах,​ сам разработал и реализовал несколько специализированных языков и макропроцессоров,​ писал даже непосредственно в двоичных кодах и абсолютных адресах (первый раз ещё в школе),​ но, познакомившись с Си, понял, что в терминах этого языка мне удобнее всего думать и излагать свои мысли. 
-3. Удобный музыкальный редактор,​ работающий с той музыкальной аппаратурой,​ которую вы рассчитываете использовать в своей игре. Так же, как и для графики,​ вам должны быть доступны соответствующие библиотечные функции для удобного проигрывания созданной музыки из вашей программы. +  ​- ​Вам могут потребоваться отдельные утилиты,​ осуществляющие преобразование форматов данных,​ осуществляющих защиту от копирования ваших программ,​ средства работы с библиотеками и автодокументатор для исходных текстов или какиенибудь другие средства в зависимости от необходимости и конкретных потребностей каждого разработчика. ​\\ В случае коллективной разработки проекта,​ вам потребуются соответствующие средства коллективной разработки и сопровождения комплекса программ,​ а также команда бетатестеров (альфатестерами выступают сами разработчики). 
-Хорошо,​ когда музыка,​ используемая в игре, мелодична и удачно аранжирована. Поэтому,​ если вы не уверены в собственных силах, попросите написать музыку для вашей игры профессионального музыканта. В противном случае ваша игра может потерять привлекательность даже при интересном сценарии и хорошо продуманном алгоритме. (То же самое, впрочем,​ относится и к графике. ) +  ​- ​И, наконец,​ может быть, самое важное. Вам нужна библиотека функций,​ с помощью которой можно легко и удобно работать с графическими и звуковыми данными,​ опрашивать все необходимые вводные устройства (мышь, джойстик,​ клавиатуру,​ специальные контроллеры),​ осуществлять анимацию объектов и управлять ими, следуя логике вашей игры и не отвлекаясь на «заклинания»,​ необходимые для взаимодействия с компьютером через различные системные интерфейсы,​ требующие выполнения множества системных соглашений.
- +
-4. Необходим компилятор с языка программирования,​ на котором вам удобнее всего излагать свои мысли, и, может быть, ассемблер. С точки зрения компактности письма и обозримости текста программы лучше всего писать и отлаживать свои программы на языках высокого уровня,​ но, если эффективность порождаемого компилятором кода оказывается недостаточной,​ отдельные (наиболее критичные по быстродействию или использованию памяти) функции придётся переписывать на ассемблере. +
-Для себя, например,​ я сделал выбор языка программирования несколько лет назад, остановившись на языке Си. Перед этим я писал программы на более чем десятке разных языков и ассемблеров на различных компьютерах,​ сам разработал и реализовал несколько специализированных языков и макропроцессоров,​ писал даже непосредственно в двоичных кодах и абсолютных адресах (первый раз ещё в школе),​ но, познакомившись с Си, понял, что в терминах этого языка мне удобнее всего думать и излагать свои мысли. +
- +
-5. Вам могут потребоваться отдельные утилиты,​ осуществляющие преобразование форматов данных,​ осуществляющих защиту от копирования ваших программ,​ средства работы с библиотеками и автодокументатор для исходных текстов или какиенибудь другие средства в зависимости от необходимости и конкретных потребностей каждого разработчика. +
-В случае коллективной разработки проекта,​ вам потребуются соответствующие средства коллективной разработки и сопровождения комплекса программ,​ а также команда бетатестеров (альфатестерами выступают сами разработчики). +
- +
-6. И, наконец,​ может быть, самое важное. Вам нужна библиотека функций,​ с помощью которой можно легко и удобно работать с графическими и звуковыми данными,​ опрашивать все необходимые вводные устройства (мышь, джойстик,​ клавиатуру,​ специальные контроллеры),​ осуществлять анимацию объектов и управлять ими, следуя логике вашей игры и не отвлекаясь на «заклинания»,​ необходимые для взаимодействия с компьютером через различные системные интерфейсы,​ требующие выполнения множества системных соглашений.+
  
 Проблема «заклинаний» иногда приобретает просто чудовищный характер в некоторых мультизадачных средах,​ где большинство системных ресурсов,​ к которым необходимо получить доступ,​ требуется сначала описать,​ потом открыть,​ заполнив предварительно подготовленные соответствующие структуры данных,​ и, наконец,​ поработав с этими ресурсами (далеко не всегда удобными для вас лично примитивами системных операций),​ освободить,​ закрыть и вернуть системе. Проблема «заклинаний» иногда приобретает просто чудовищный характер в некоторых мультизадачных средах,​ где большинство системных ресурсов,​ к которым необходимо получить доступ,​ требуется сначала описать,​ потом открыть,​ заполнив предварительно подготовленные соответствующие структуры данных,​ и, наконец,​ поработав с этими ресурсами (далеко не всегда удобными для вас лично примитивами системных операций),​ освободить,​ закрыть и вернуть системе.
Строка 260: Строка 252:
 Но это лишь одна из причин,​ по которой разработку каждого нового класса программ лучше всего начинать с проектирования или расширения вашей собственной библиотеки. Но это лишь одна из причин,​ по которой разработку каждого нового класса программ лучше всего начинать с проектирования или расширения вашей собственной библиотеки.
  
-Другая (и более важная) причина заключается в том, что, если вы хотите действительно быстро писать программы данного класса (в частности,​ игры), не отвлекаясь на второстепенные детали,​ вам необходимо определить,​ в каких терминах и операциях вам удобнее всего описывать алгоритмы работы программ этого класса (включая языковые конструкции используемого вами языка программирования). Другими словами,​ следует понять,​ каким вам хотелось бы видеть язык, на котором вы будете писать свою программу. Это очень важная работа и ее желательно проделать в начале,​ т.е. перед тем, как написать самую первую строку вашей самой первой программы любого нового для вас класса. (В этом могут оказать большую помощь объектноориентированные языки программирования).+Другая (и более важная) причина заключается в том, что, если вы хотите действительно быстро писать программы данного класса (в частности,​ игры), не отвлекаясь на второстепенные детали,​ вам необходимо определить,​ в каких терминах и операциях вам удобнее всего описывать алгоритмы работы программ этого класса (включая языковые конструкции используемого вами языка программирования). Другими словами,​ следует понять,​ каким вам хотелось бы видеть язык, на котором вы будете писать свою программу. Это очень важная работа и её желательно проделать в начале,​ т.е. перед тем, как написать самую первую строку вашей самой первой программы любого нового для вас класса. (В этом могут оказать большую помощь объектноориентированные языки программирования).
  
 Результатом этой работы должно стать множество структур данных и операций,​ минимизированное по количеству функций и их параметров,​ что позволит наиболее компактно описать алгоритм работы вашей программы. Это очень тонкая работа,​ требующая известного опыта и являющаяся своего рода искусством:​ исходя из общей постановки задачи (например,​ в виде сценария) и знания архитектуры вашего компьютера (или архитектур всех известных вам компьютеров),​ следует придумать максимально эффективные примитивы операций,​ с помощью которых вы могли бы предельно компактно описать все ваши алгоритмы и которые не снижали бы существенно эффективности работы ваших готовых программ! Результатом этой работы должно стать множество структур данных и операций,​ минимизированное по количеству функций и их параметров,​ что позволит наиболее компактно описать алгоритм работы вашей программы. Это очень тонкая работа,​ требующая известного опыта и являющаяся своего рода искусством:​ исходя из общей постановки задачи (например,​ в виде сценария) и знания архитектуры вашего компьютера (или архитектур всех известных вам компьютеров),​ следует придумать максимально эффективные примитивы операций,​ с помощью которых вы могли бы предельно компактно описать все ваши алгоритмы и которые не снижали бы существенно эффективности работы ваших готовых программ!
Строка 268: Строка 260:
 При внимательном рассмотрении данной концепции легко заметить,​ что множество примитивов,​ о которых шла речь выше, вместе с конструкциями используемого языка программирования образуют некоторый новый язык, на котором и описывается алгоритм работы программы. Часть примитивов погружается в библиотеки,​ а часть выносится на уровень макросов языка программирования. При этом, как показывает практика,​ на уровень макросов чаще всего выносятся узкоспециализированные обращения к тем же библиотечным функциям или их использование в различных частных комбинациях,​ увеличивающие выразительную силу нового языка. При внимательном рассмотрении данной концепции легко заметить,​ что множество примитивов,​ о которых шла речь выше, вместе с конструкциями используемого языка программирования образуют некоторый новый язык, на котором и описывается алгоритм работы программы. Часть примитивов погружается в библиотеки,​ а часть выносится на уровень макросов языка программирования. При этом, как показывает практика,​ на уровень макросов чаще всего выносятся узкоспециализированные обращения к тем же библиотечным функциям или их использование в различных частных комбинациях,​ увеличивающие выразительную силу нового языка.
  
-Правда,​ такой подход несколько противоречит концепции структурного программирования Н. Вирта, в которой любая разработка должна проектироваться догматически строго сверху вниз, но, вопервых,​ Вирт и его последователи замалчивали этап предварительной разработки языка под задачу,​ вовторых,​ в программах,​ работающих в реальном масштабе времени,​ всегда важно знать и оценивать реакции аппаратуры на различные сложные воздействия,​ а не опробовав каждую новую программную функцию нижнего уровня,​ такие оценки давать очень трудно. К тому же разработка большинства программ идёт почти всегда сразу в двух направлениях:​ от аппаратуры — снизу вверх и от логики разработки всего проекта — сверху вниз. Интересно,​ что после «обкатки» каждого нового набора примитивов на нескольких программах данного класса становится возможным и даже удобным пользоваться в дальнейшем исключительно структурным подходом при проектировании новых программ данного класса.+Правда,​ такой подход несколько противоречит концепции структурного программирования Н. Вирта, в которой любая разработка должна проектироваться догматически строго сверху вниз, но, вопервых,​ Вирт и его последователи замалчивали этап предварительной разработки языка под задачу,​ вовторых,​ в программах,​ работающих в реальном масштабе времени,​ всегда важно знать и оценивать реакции аппаратуры на различные сложные воздействия,​ а не опробовав каждую новую программную функцию нижнего уровня,​ такие оценки давать очень трудно. К тому же разработка большинства программ идёт почти всегда сразу в двух направлениях:​ от аппаратуры — снизу вверх и от логики разработки всего проекта — сверху вниз. Интересно,​ что после «обкатки» каждого нового набора примитивов на нескольких программах данного класса становится возможным и даже удобным пользоваться в дальнейшем исключительно структурным подходом при проектировании новых программ данного класса.
  
 Таким образом,​ ваш «верстак» должен содержать немалое количество хороших специальных инструментов,​ подходящих для такой работы. Но если вы не пожалеете времени на сбор этих инструментов,​ их освоение и разработку недостающих,​ то скоро у вас появится возможность «печь» наши программы как блины — быстро и качественно! Таким образом,​ ваш «верстак» должен содержать немалое количество хороших специальных инструментов,​ подходящих для такой работы. Но если вы не пожалеете времени на сбор этих инструментов,​ их освоение и разработку недостающих,​ то скоро у вас появится возможность «печь» наши программы как блины — быстро и качественно!
  
-На своём опыте я уже не раз убеждался в этом. Потратив известное время на изготовление «верстака» для совершенно «голого» в те времена компьютера MSX (19861987 гг.), я затем всего за полгода написал четыре(!) [[msx:​ar_games:​ar_games|игровых программы]] выше средней степени сложности. Причём каждая из них разрабатывалась с нуля, включая сценарий,​ музыку,​ графику и собственно игровую программу. Таким образом,​ на каждую игру от начала разработки (первого слова сценария) до её окончательного завершения (вместе с музыкой и графикой) уходило всего полтора месяца работы одного человека!+На своём опыте я уже не раз убеждался в этом. Потратив известное время на изготовление «верстака» для совершенно «голого» в те времена компьютера MSX (19861987 гг.), я затем всего за полгода написал четыре(!) [[msx:​ar_games:​ar_games|игровых программы]] выше средней степени сложности. Причём каждая из них разрабатывалась с нуля, включая сценарий,​ музыку,​ графику и собственно игровую программу. Таким образом,​ на каждую игру от начала разработки (первого слова сценария) до её окончательного завершения (вместе с музыкой и графикой) уходило всего полтора месяца работы одного человека!
  
 Все четыре игры относились к классу «приключенческих» игр (Adventure),​ обладали сложными сценариями,​ развитой анимацией,​ экранными скроллингами больших полиэкранов,​ специальной многооконной организацией графической информации и генерировали свои игровые вселенные с учётом вероятностного распределения параметров,​ что исключало возможность повторения одних и тех же игровых ситуаций. Каждый сеанс любой из этих игр был новым приключением с новыми отличиями в каждой конкретной игре. Все четыре игры относились к классу «приключенческих» игр (Adventure),​ обладали сложными сценариями,​ развитой анимацией,​ экранными скроллингами больших полиэкранов,​ специальной многооконной организацией графической информации и генерировали свои игровые вселенные с учётом вероятностного распределения параметров,​ что исключало возможность повторения одних и тех же игровых ситуаций. Каждый сеанс любой из этих игр был новым приключением с новыми отличиями в каждой конкретной игре.
Строка 281: Строка 273:
  
 ====== Заключение ====== ====== Заключение ======
-Я надеюсь,​ что если хотя бы один читатель этой статьи узнает из неё чтонибудь новое или полезное для себя лично, то моя задача уже выполнена.+Я надеюсь,​ что если хотя бы один читатель этой статьи узнает из неё чтонибудь новое или полезное для себя лично, то моя задача уже выполнена.
  
-А если какойнибудь мой коллегапрограммист прольёт слезу умиления над этой статьёй,​ потому что сам давнымдавно пришёл к тем же выводам,​ я буду просто счастлив.+А если какойнибудь мой коллегапрограммист прольёт слезу умиления над этой статьёй,​ потому что сам давнымдавно пришёл к тем же выводам,​ я буду просто счастлив.
  
 Во всех остальных случаях не судите меня слишком строго,​ ведь игры — дело совершенно несерьёзное. В них играют маленькие дети. А большие дети их разрабатывают. Во всех остальных случаях не судите меня слишком строго,​ ведь игры — дело совершенно несерьёзное. В них играют маленькие дети. А большие дети их разрабатывают.
Строка 292: Строка 284:
  
  
 +----
  
- 
-====== Ссылки ====== 
  
 [[http://​rodionov.info/​literature.shtml#​MyOwnGame|Оригинал]] [[http://​rodionov.info/​literature.shtml#​MyOwnGame|Оригинал]]
Строка 300: Строка 291:
  
 {{tag>​article Rodionov_A_B}} {{tag>​article Rodionov_A_B}}
- 
articles/rodionov_myowngame.1582634676.txt.gz · Последние изменения: 2020-02-25 15:44 — GreyWolf