Перейти к содержимому

  • Войти / Регистрация

Фото

Программируем игры нашей мечты


  • Чтобы отвечать, сперва войдите на форум
64 ответов в теме

#1 Nikvodup

Опубликовано 14 Июль 2016 - 23:28  

Nikvodup

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 669
  • Сообщений: 2 551
  • Откуда:От верблюда

Да, знаю, заголовок из серии "Купите новую карточку от Nvidia, и вы буквально почувствуете, как изменилось ваше восприятие героев", но что поделать. Если переходить прямо к сути, то я накатал на Паскале, пользуясь базовыми знаниями, одну гриндилку. Я бесталантный и ленивый, но всё равно, у меня есть желание уж если не создавать, то пользоваться качественным контентом, и я не могу читать\смотреть всякие правильные "10 из 10", за исключением момента, когда я сам в тусовке, и пытаюсь не отставать от народа. Поэтому сама такая возможность сделать всё самому как надо, и даже не прибегая к собираю обременительной команды - не может как-нибудь не завлечь. Не строчить стены безумных идей разработчикам очередной части - а взять, и воплотить их все в жизнь самому. И как минимум три жанра из семи подходят под этот простенький текстовый движок, который вы в одинчку и осилите. Гриндилка же вот она. Назову её пока чуть-чуть беткой. Для "полной незаконченной версии" мне надо добавить второго боса, свежие заклинания, одну фишечку, выловить возможные баги, и подшлифовать. Но и сейчас она имеет полностью законченный вид, так что пробуйте.

Я слыхал, помню, бывало: "Старые игры были некрасивые, но зато геймплей, сюжет, бу бу бу." Во дела. Да старые игры на одной только графике и музыке и держались. Что-что, а атмосферу тогда делать действительно умели. Но перейди мы к геймплею и к тексту? Да стандартные. Главное почесать точку джи, сказав игроку, что он прочитал Текст, сделал Выбор, или поиграл в игру, которую уважают Уважаемые люди. Всё, ты в дамках. Ведь так много для всего этого надо знать. Были, были игры. Но о них знал, и до сих пор знает, один лишь только Вася, да сосед его Федя, а разработчик давно уже плюнул на всё и ушёл в монастырь. А потом игропром (ещё даже в конце 90-х) вообще вступил в эпоху выживания, и каждый шаг уже приходилось отмерять и рассчитывать. Когда я играл в первый Age of Empires(97), мне, помимо всего прочего, очень нравилось начало. Когда мы там создавали наших первых крестьян под историчекую сводку о первом расселении человечества в долине Нила. Тёмные века, мало народу на Земле - магия. Я бы хотел чтобы они на этом подзадержалось подольше. Но я тогда перепутал причину со следствием. Просто тогда обучалки ещё делали более-менее нормально, и для стандартного разведения первых 7-и крестьян нам не поленились и состряпали историческую справку. (В каком-то тайкуне, кстати, Нил огромной змеёй стелется справа экрана, и является частью геймплея). Когда уже позже я смотрел на мелкие скриншоты вторых AoE(2000+-гг.), и видел там праздношатающихся дам в шляпках под руку с кавалерами, ступающих по дорожкам вокруг громадного университета, я интуитивно понимал, что вот в подполье-то ты можешь людям хоть когти выдирать, но на публике ты должен быть вежливым и при смокинге. Это даже не двуличность, это основа жизнеспособного здорового общества. И я всё гадал тогда, как же они умудрятся увязать городскую манерность с фермерством, и уж тем более с войной, наверняка это будет интересно и необычно. Но оказалось, что то всего лишь у нас это так крестьян теперь от Кутюр приодели. А университет оказался лишь чудом света, это тепереча они у нас заместо колоссов и пирамид стояли, б\у-шные. Повторюсь, это мне ни на грамм не умалило моего удовольствия, просто мысли свои вспомнил, а они тогда были искренними. Конечно, я очень сильно обобщил насчёт старых игр, я бы и сам сгорел от такого заявления, даже в упомянутой выше "ртске" AoE1 была клёвая миссия, где начинаешь одним монахом, а рядом аггресивный, и более нейтральный враг - что уж говорить о чём-нибудь более этаком. Но всё-равно, вручную выполненная концепция - вот чего частенько не хватало и старым играм. Просто вот, весь этот нелепый бедлам в стане игропрома был уже и тогда, с навязыванием никому не нужных идей, как бы разработчики чего не пытались - я тут немного поварился в прошлых элитных журналах.

Spoiler


  • 0

#2 haksaw

Опубликовано 14 Июль 2016 - 23:50  

haksaw

    Заслуженный ветеран

  • Завсегдатай
  • ФишкаФишкаФишкаФишка
  • 1 787
  • Сообщений: 4 265

Так вроде для "игр вашей мечты" есть куча более-менее сносных движков, рпгмейкер тот же. Зачем так извращаться? :ph34r:


  • 0

#3 Nikvodup

Опубликовано 15 Июль 2016 - 06:31  

Nikvodup

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 669
  • Сообщений: 2 551
  • Откуда:От верблюда

Потому что они примитивные по возможностям. Вот, как это водится, забыл вчера вернуть одно значение, с которыми игрался, так что перезалил.


  • 0

#4 StEx

Опубликовано 19 Июль 2016 - 11:29  

StEx

    Бывалый геймер

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишка
  • 1 667
  • Сообщений: 5 101


Потому что они примитивные по возможностям.

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


  • 0

#5 Nikvodup

Опубликовано 22 Июль 2016 - 14:44  

Nikvodup

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 669
  • Сообщений: 2 551
  • Откуда:От верблюда

С того момента, как я выложил ту первую версию, я - ну сначала я забил, потом вернулся - 70 процентов времени, проводимого с паскалем, занимался перелопачиванием Исходного Кода (прикольный одноимённый фильм кстати), дабы он не увяз под собственной массой. Но всё-равно, в конце я включил кнопку "Турбо" (на компах раньше такая была), и добавил всё, что хотел, продумав прикольных босов, и прочую мелочь, так что должно быть интересно. Единственный минус такого ускоренного подхода в том, что я не весь свой путь затестил, только важные его моменты, так что вполне могут проскочить как баги, так и дыры в балансе. Поэтому в этот раз я решил закинуть архив тупо на одну страничку, дабы не давать потом каждый раз новую ссылку, пока я буду, спокойно играя сам, оперативно исправлять недочёты. Когда будет супер стабильная версия, я там так это и напишу. Сейвы с прошлой не совместимы, но доработки уже текущей версии никак на её сейвы не повлияют - все нужные переменные я туда уже засунул. Продублирую также пока прямой ссылкой. Там ещё в пути у ярлыка косяк был - поправил. Скачка со страницы. Прямая ссылка.

Развивать дальше уже не получится, потому что Паскаль начал показывать зубки. Мне вот он всем нравится, там человеческие понятные команды, ибо я не хочу заниматься именно программированием, и изучать тот же С++ с его китайской грамотой (на первый взгляд), не хочу распределять память, я использую его просто как средство. Это раньше мне интересно было, чтобы НЛО по экрану летало и взаимодействовало с окружающей средой, сейчас мне достаточно его пошаговых возможностей. Так вот, там дурацкие ограничения. 300 килобайт оперативки, но даже когда её у меня было ещё 200 в резерве, программа сказала, что я превысил кол-во символов (65 000) в самом тексте программы. Отлично, блин. Всем дурдомам дурдом. Можно её, конечно, на модули разбивать, но это тоже временное решение проблемы, плюс куча лишнего гемороя. Так что пока всё. Обидно. Пришлось обрезать текст второй половины игры, чтобы хоть как-то впихнуть.

 

Пробовал ещё моральные выборы делать. Например, в начале второго Фулаута два брата могут в диалоге разговаривать на тему, с которой познакомят нас в этом же диалоге, но позже. Понял, что технически всё-таки да, вроде и не сложно, но кавардак переменных, плюс упрямость компилятора, который никогда не пойдёт на встречу, если что-то не сошлось. С моральный стороны ещё сложнее, наделать то ты их можешь хоть тыщу, но так, чтобы они были естественными - дай бог если один такой осилишь, поэтому забил. Ну, у меня там идея была, что ты на корабле летаешь, ходишь по нему, а сам являешься координатором планетарных высадок, у тебя там своя кабинка с кучей рычажков и датчиков. Где-то зачатки наработок валялись. И вот ещё игра, Шенмуе 1\2. Я когда про неё в Стране Игр читал, я вообще не понял о чём она, но было ощущение мирка, ещё деньги надо было зарабатывать в зубодробительной головоломке с ящиками (Крота сразу напомнило со школьных компов). Недавно наткнулся в ютубе, и мне очень понравился проходильщик, правильный такой, спокойный. Сам себе ещё просто накачал, не смотрел. Говорят - очень детальная. Прокололись они в том, что они её на Сатурне делали, а не на Плойке. Знали бы, куда ветер дует, щас бы авось играли мы в Шенмуе наносит ответный удар 10. Ой, а хотя чего это я - видимо поиграем!


  • 0

#6 StEx

Опубликовано 22 Июль 2016 - 15:40  

StEx

    Бывалый геймер

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишка
  • 1 667
  • Сообщений: 5 101

Ну так садись на дельфи. Тот же паскаль, но под новые системы и с графикой.


  • 0

#7 Вячеслав_Z

Опубликовано 02 Август 2016 - 20:38  

Вячеслав_Z

    Почетный посетитель

  • Завсегдатай
  • ФишкаФишка
  • 21
  • Сообщений: 367
  • Откуда:Пермь

А типа там: Unity3d, UE4, CE3 ?


  • 0

#8 Nikvodup

Опубликовано 18 Сентябрь 2016 - 09:10  

Nikvodup

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 669
  • Сообщений: 2 551
  • Откуда:От верблюда

Чуть поварившись в этом деле, я готов теперь чуть поглубже рассмотреть процесс создания игр. Когда пару лет назад вышла игра от Лариан Divinity: Original Sin, у меня почему-то жутко бомбануло. И не у меня одного, судя по некоторым моим тут "знакомым". Кто-то кривился от сравнения с Фулаутом, кто-то от с БалдурсГейтом. А у меня просто бомбануло. Я даже тему хотел создать, чтобы туда батхёрты выплёскивать, благо был готов признаться в том, что горю, и не надо воспринимать мои слова всерьёз, но не было возможности. К тому же мне не понравился мир. Когда герои, а это в серьёзной-то рпг!, зашли в начале в стартовую пещеру и убили там короля Леорика (аналог Кащея Бессмертного: два яйца - две жизни), это всё отдало такой диаблоподобной попсятиной, что, когда затем, в симпатичном городе, наших героев перенесли в башню гремлина, с ткацким станком времени, я начал уже просто плеваться – очередная мура для отыгрывателей. И только недавно я узрел, что как минимум ролевую систему они сделали с душой, да и остальное там прикладывается. Но, про это чуть позже. Аналитика моя эта, она не совсем диванная, ибо мысль лежит на поверхности, но она, правда, и не приведёт ни к чему. Да, я стал больше уважать труд разработчиков, но, спустя пол часа, я как и раньше буду бить ложкой по столу и кричать: подавай-ка мне тут удобовариваемую игру, а не заслуг мне твоих тут перед отечеством. Например, когда я во времена вторых Героев запилил управляемую клавишами НЛО, с искрящейся молнией между рожками антенн, и гордо показал её мужику, с которым играл – он мне сказал такой: ну ок…а чё тут вот это вот не вот так? Вот она разница. Итак, процесс создания шедевра происходит у нас в три стадии:
 

Spoiler

 

 

Ну так садись на дельфи. Тот же паскаль, но под новые системы и с графикой.

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

А типа там: Unity3d, UE4, CE3 ?

Понимаешь, в чём проблема. Никто ничего против разных движков не имеет. Только вот как ты представляешь себе: человек садится с нуля, и что он там сделает? Как хищник идёт между тремя ёлками, и у тебя уходит на реализацию этого пол года? Я предлагаю простой и гибкий вариант. Здесь ты получаешь такую абсолютную власть над переменными, которая всем этим Сталиным и Гитлерам и не снилась. Вот у меня один босс периодически сдувает с героев вещи. Смогу я это реализовать в рпгмейкере? Не уверен. А это ведь ещё не полёт фантазии. Есть и свои минусы, конечно, для меня как раз основной геморой, это интерфейс, проблему которого решает любой 2д движок. Я просто смысла этих вкидываний не особо понимаю. Если кому есть что делать, пусть делает на чём угодно, а я поиграю. Есть клёвая идея - паскаль\дельфи. Есть интересная история - рпгмейкер. Есть навыки архитектора - 3д-движок. Есть где-то клёвый 2д-движок с встроенным языком программирования - хватайте его. И.т.д. Просто основной упор у меня был именно на идею, ибо мы плачемся, что не хватает именно её, плюс на простой инструментарий аля "сам себе хозяин".


  • 1

#9 ss39

Опубликовано 18 Сентябрь 2016 - 10:17  

ss39

    Магистр игрового флуда

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишкаФишкаФишка
  • 3 555
  • Сообщений: 11 604

И вот ещё игра, Шенмуе 1\2. Я когда про неё в Стране Игр читал, я вообще не понял о чём она, но было ощущение мирка,
ещё деньги надо было зарабатывать в зубодробительной головоломке с ящиками (Крота сразу напомнило со школьных компов).
Недавно наткнулся в ютубе, и мне очень понравился проходильщик,
правильный такой, спокойный. Сам себе ещё просто накачал, не смотрел. Говорят - очень детальная. Прокололись они в том, что они её на Сатурне делали, а не на Плойке.
Знали бы, куда ветер дует, щас бы авось играли мы в Шенмуе наносит ответный удар 10. Ой, а хотя чего это я - видимо поиграем!

Это Дримкаст а не Сатурн. И если называть вещи своими именами Шенмуе было первым высокобюджетным кинцом без геймплея.
  • 0

#10 Nikvodup

Опубликовано 29 Ноябрь 2016 - 08:14  

Nikvodup

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 669
  • Сообщений: 2 551
  • Откуда:От верблюда

Исходный код одной из версий моей игры (ставьте шрифт terminal чтобы русское читалось, справедливо для всех старых readme файлов) - начинается всё с инвентаря и х-к, потом идёт битва с нейтралами, затем битвы с босами, а в конце основная программа, которая всё вызывает.

Наброски моих несостоявшихся игр. Там и фэнтэзийный поток с шутками за триста, и н\ф, с несостоявшимися выборами.

Кстати, видел, как чувак на околоПаскале танчики сделал (аналог battle city), с одновременным полётом снарядов и движущимися симпотными танками. Просто понятия не имею, как он это сделал, но круто.


  • 0

#11 DAS

Опубликовано 30 Ноябрь 2016 - 09:42  

DAS

    Советник гильдии флуда

  • Модератор
  • 777
  • Сообщений: 2 085

Делфи и паскаль - это что-то черезчур древнее для кодинга. Лучше уж освоить что-то из более современного (перл, руби, питона, си-шарп или джаву в зависимости от предпочтений).

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

 

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


  • 0

#12 Nikvodup

Опубликовано 30 Ноябрь 2016 - 18:27  

Nikvodup

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 669
  • Сообщений: 2 551
  • Откуда:От верблюда

Да он и обычным нотпадом открывает, я поэтому и упомянул про незаменимый шрифт "терминал", если русские комменты кракозябрами. Я так давеча ридми во втором Варкрафте прочитал, где они извинялись за возможную озвучку - уж прибеднились так прибеднились.
Паскаль же как минимум имеет такой низкий порог вхождения, что я все свои знания одной статьёй передал. Да и просто прикольно первое время писать зависимости, и смотреть, как оно оживает и создаёт перед тобой челлендж. Разработчик SpaceChem'a, вон, вообще клепает простенькие программируемые игры с ограниченным функционалом - и ничо, все кипятком писаются, и выдают лабиринты лучше чем в Might&Magic1,2 (там левые и правые ответвления вообще не отображались).
Но чего-то массивного в нём и в правду не сделаешь, потонешь под объёмом информации пытаясь обойти все юридические проволочки. Хотя некоторые выбирают как челлендж. Ну дык я только за другой движок, но синица в руках - она как-то трепыхается осязаемее.
 
Вообще я понял, что надо писать себе "внутренний движок игры". Например, если игра про выборы, надо создать какую-то внутреннюю таблицу экселя, где все возможные выборы по нашему выбору обрабатываются по всей игре - и отлаживать легче на предмет глюков. С разбивкой на главные и второстепенные выборы.
В стратегиях такой движок уже есть - это редактор карт. То есть там не прописывают в каждой карте координаты юнитов и реагирования на события, а описывают объект "событие", с кучей параметров, а потом засовывают его в редактор аккуратной моделькой. В движке Балдурс Гейтс это как минимум диалоговое окно с перенаправлением в зависимости от выборов (а то меня больше всего напрягала "если нажата 1 то...", притом если хочешь, чтоб все не используемые в текущей ситуации клавиши не обрабатывались (удобство интерфейса), то опять же, это надо отдельно прописывать).

В трёхмерных движках это движок вообще можно изменить до неузнаваемости (как движок третьего квейка стал движком современного коловдути).
 
Классы и методы - это уже видимо следующая ступень. Новичку оно не так наглядно (дурацкие команды), а следовательно интересно. Если это и есть объектно-ориентировочное программирование, где есть родительный объект, например упоминаемый мной юнит стратегии. И от него зависимый крестьянин, который умеет копать, и зависимый воин, сам бегущий в атаку, только теперь и на уровне переменных тоже, то разбираться со всем этим "программированием на уровне ассоциаций и отстранённых понятий" наверное, интересно. Но я до этого так и не дошёл - интересно, но теперь уже лишь как факультативый интерес. Мы тут игры делаем в конце концов!
А в чужой код, я вроде как слышал, ни один программист кроме как из под палки не полезет ("Ксенонавт"ер вроде что-то такое писал в прилагающемся к игре файлике). Для меня, например, мой (на уровне того, что происходит) прозрачен, а пытаясь разобраться с в разы более изящно написанными танчиками (я всё-таки деревенщина, плюс перелопачивал свой на ходу) - даже не стал, потому что саму идею сложно ухватить.


  • 0

#13 DAS

Опубликовано 01 Декабрь 2016 - 10:30  

DAS

    Советник гильдии флуда

  • Модератор
  • 777
  • Сообщений: 2 085


Классы и методы - это уже видимо следующая ступень. Новичку оно не так наглядно (дурацкие команды), а следовательно интересно. Если это и есть объектно-ориентировочное программирование, где есть родительный объект, например упоминаемый мной юнит стратегии. И от него зависимый крестьянин, который умеет копать, и зависимый воин, сам бегущий в атаку, только теперь и на уровне переменных тоже, то разбираться со всем этим "программированием на уровне ассоциаций и отстранённых понятий" наверное, интересно.

Нет, не так.

Есть класс Крестьянин, который имеет методы есть, пахать. Есть класс Кузнец, который умеет ковать, при этом ты передаёшь ему объект класса железо и объект класса уголь, в обмен получая объект класса меч или щит.

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

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

В общем, советую разобраться.

 


А в чужой код, я вроде как слышал, ни один программист кроме как из под палки не полезет ("Ксенонавт"ер вроде что-то такое писал в прилагающемся к игре файлике). Для меня, например, мой (на уровне того, что происходит) прозрачен, а пытаясь разобраться с в разы более изящно написанными танчиками (я всё-таки деревенщина, плюс перелопачивал свой на ходу) - даже не стал, потому что саму идею сложно ухватить.

Ну твой код не так уж и сложен, ни одного комментария развёрнутого, но можно понять что есть что. В детали я конечно не полез.

Но у меня какой-то опыт есть чтения чужого кода и написания подобных программ.

А ещё чем логичней построена внутренняя структура кода и чем меньше в нём костылей, тем проще. Любой goto делает код сложнее, а повсеместное их использование превращает код в нечитаемое непредсказуемое месиво. А вот структурированный код будет читаться проще, при условии, ты можешь структуры осмыслить.


  • 0

#14 Nikvodup

Опубликовано 01 Декабрь 2016 - 16:27  

Nikvodup

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 669
  • Сообщений: 2 551
  • Откуда:От верблюда

Нет, не так.
Есть класс Крестьянин, который имеет методы есть, пахать. Есть класс Кузнец, который умеет ковать, при этом ты передаёшь ему объект класса железо и объект класса уголь, в обмен получая объект класса меч или щит.
Это предельно интуитивно и в разы лучше чем искать функции, которые что-то там преобразуют в огромном списке функций. Надо просто к этому привыкнуть.
Можно делать и родительские-дочерние классы, но это тоже не барон-крестьянин. Дочерний класс наследует методы родительского. Скажем класс оружие может иметь дочерние меч, и лук. Тогда и меч и лук смогут атаковать (если у оружия есть такой метод), но мечом дополнительно можно научить, скажем, обезоруживать.
В общем, советую разобраться.

Ну с крестьянином я угадал :). Типа простой юнит умеет умирать, реагировать на щелчок мыши при выборе и т.д. И потом на его основе я создаю крестьянина, который ещё и копает, и воина, который ещё и сам срывается в атаку. Говорят, так удобнее делать интерфейс, не надо по сто раз одно и то же писать. А вот первое для меня уже новое.

Ну твой код не так уж и сложен, ни одного комментария развёрнутого, но можно понять что есть что. В детали я конечно не полез.
Но у меня какой-то опыт есть чтения чужого кода и написания подобных программ.
А ещё чем логичней построена внутренняя структура кода и чем меньше в нём костылей, тем проще. Любой goto делает код сложнее, а повсеместное их использование превращает код в нечитаемое непредсказуемое месиво. А вот структурированный код будет читаться проще, при условии, ты можешь структуры осмыслить.

Ну если только goto ты использовал в переносном смысле, потому что эта команда действительно ломает всю программу (позволяет прыгать в любую её точку), и я её не использовал в принципе (вроде в Бэйсике она ходовая). А нисходящая пирамида процедур - как раз и представляет собой стройную структуру, где глобальные задачи разбиваются на всё более мелкие. Притом если тебе интересно развивать себя именно как программиста, то она предоставляет отличный плацдарм для этого. Например у меня все герои атакуют изначально монстров, а те - героев, а вот если бы я прописал, чтобы они атаковали безликого антагониста, это было бы геморойнее, но позволило бы какому-нибудь босу переманить потом моего товарища. Или вот, у меня заклинание, которое искажает получаемый и выдаваемый урон, и мне везде надо было этот нюанс прописывать (ненапряжно, просто можно проглядеть). А вот если бы я не поленился и создал отдельную процедуру под это дело, то мне достаточно было бы везде писать потом "атака с текущим уроном", а там уж он сам разберётся. Такую вот процедуру я и сделал для деления, которой я всё и делил потом: она ничего не делала, если делитель был ноль, и ещё и округляла вверх\вниз впридачу - и мне уже не надо заботиться о вылетах "devided by zero", встречаемых и в крупных программах. Или вот мне пришлось сделать все переменные глобальными, так как некоторые процедуры начинали со временем капризничать. Но процедуры желательно делать полностью автономными, чтобы из них лепить что угодно, беда вся в том, что это потребовало бы вводить в каждой из них слишком много параметров. Но я мог бы создать вторую процедуру, которая вызывала бы первую, со всеми заранее прописанными параметрами, кроме тех, которые меняются. То есть простор для творчества есть. Ты просто требуешь сразу перескочить на второй пункт, сам же сидел на этом деле сначала. Безусловно, это наверное лучше, но это как построить дом своими руками, и управлять крупной строительной компанией. Второе требует более абстрактных понятий: сколько фанеры закупать, каким налоговым "щипачам" отстёгивать, за какими котировками следить. Постройка же дома требует более интересных вещей: как правильно брёвна подгонять, чтобы держались, и тепло не выпускали, какие методики использовать. И даже если тебе интересно возиться с бумажками, тебе всё равно надо хоть раз построить дом своими руками, тогда ты будешь более тоньше чувствовать рынок и дольше останешься конкурентноспособным. Хотя да, построить дом во втором случае потребует лишь одного росчерка пера. В процедурах вообще ничего плохого не вижу - интересный жизнеспособный инструментарий, пока ты только не начнёшь делать большую программу на вырост. За то, что "прочитал" - респект, я сам уже смотрел на некоторые вещи (тот же инвентарь), и думал, вот не дай бог всё потрётся - в жизни не воспроизведу.


  • 0

#15 DAS

Опубликовано 02 Декабрь 2016 - 11:33  

DAS

    Советник гильдии флуда

  • Модератор
  • 777
  • Сообщений: 2 085


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

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


  • 0

#16 Nikvodup

Опубликовано 02 Декабрь 2016 - 22:54  

Nikvodup

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 669
  • Сообщений: 2 551
  • Откуда:От верблюда

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

Ну это да, но я, к сожалению, не программист, так, любитель побаловаться. То было как в лихорадочном бреду. А недавно вот посмотрев на Стар Ситизен, который шикарен, граничащее с гениальностью в околополётах, но настолько же неотёсан в самих полётах (весь корабль - брусок в жидком вакууме, червоточины-прыжки от точки к точке, кабина пилота, дёргающаяся от любого движения мышки), хотел сделать игрушку, где запрашиваем взлёт и посадку, а там как пойдёт, заодно расчехлил графический модуль, но быстро понял, что снова всё это набирать вообще не тянет. Сейчас вот чуть загорелся идеей сделать ту самую таблицу эксель для игры с выборами, там как раз для этого нужен более современный язык и программирование объектами, плюс игрушку заканчивать не надо, сиди себе ковыряйся. Начал читать, а у меня автор (Попов вроде), довольно своеобразный, он мне как давай задвигать о том, как корабли бороздят просторы океанов :)


  • 0

#17 DAS

Опубликовано 03 Декабрь 2016 - 15:46  

DAS

    Советник гильдии флуда

  • Модератор
  • 777
  • Сообщений: 2 085

Ты думаешь я программист? Это не так, я просто решил освоить по-минимуму какой-то язык для прикладных вещей. Пишу только когда нужно что-то автоматизировать за компом, это может и раз в год быть.

Для складирования информации надо или изучать БД попроще вроде SQLite или через winapi завязываться на эксель. Третий вариант - использовать массивы и методы работы с ними в тех самых новых языках. Скажем, в питоне есть коллекции, куда можно любые объекты складировать.

Я бы не советовал именно через эксель работать, это гемор, лучше применять уже реализованное в языке.


  • 0

#18 Nikvodup

Опубликовано 03 Декабрь 2016 - 18:13  

Nikvodup

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 669
  • Сообщений: 2 551
  • Откуда:От верблюда

Ну тогда уже ближе, уже чуть более родственная душа. Присмотрюсь к советам, если руки до всего этого дойдут :). А насчёт таблицы, тут суть не в самой прям таблице. Просто я вижу её именно таблицей. Как я уже говорил, это попытка сделать переходный мостик между чистым программным кодом и готовой игрой, на манер редактора карт. Притом работает он в двух направлениях. Первое, это из таблицы в код: я нажимаю ячейку, создаю там из разных параметров новый возможный для игрока выбор, и оно само прописывается в код, или каким-то иным образом туда вносится. Это спасает нас от кучи глюков, так как я очень невнимательный, и в любом моём кодировочном этюде вылезает как минимум пара багов. Второе, это противоположенное движение, из таблицы в игру. Я щёлкаю по ячейке, выбираю один из уже прописанных там выборов, и все изменения прогоняются по всей игре. Скажем, я убил глобальную фракцию, и все ячейки с ней становятся недоступны для последующего мной изменения, сереют. Или я убил Джека, и дом теперь не построен, вместо него стоит лес. А ячейка с домом\лесом сама теперь выдаёт нам новые выборы, в зависимости от того, стоит там лес или дом, что повлияет дальше на следующие и т.д (ну, как обрабатываются зависимости в Экселе). И вот, накликав так всю игру, я захожу в неё, и проверяю, всё ли так. Это сильно упрощает её отладку, позволяет настругать развесистое древо глобальных выборов, и спасает уж от невнимательности при создании выборов с идеологической точки зрении. Но вся эта, конечно, затея, пока, в лучшем случае, абстракна до ужаса, и советы тут вряд ли помогут. Тут надо каждый момент с нуля изобретать. Да и из ООП, я пока остановился лишь только на том, что это пока ещё просто "запись" (кто не в курсе, это когда глобальная переменная имеет в себе переменные с разными типами: имя, возраст и т.д.), к которой просто пока добавились обрабатывающие её процедуры, будущие "методы". А как от этого плясать и писать уже саму игру - пока ещё только предстоит понять.


  • 0

#19 DAS

Опубликовано 04 Декабрь 2016 - 13:05  

DAS

    Советник гильдии флуда

  • Модератор
  • 777
  • Сообщений: 2 085

Покуда я был канцелярской крысой я писал себе парсер из экселя и в эксель. Это геморрой, потому что файлы экселя может создавать только сам эксель и надо осваивать win api для того, чтобы из своей программы управлять экселем. Тогда уже осваивай VB и пиши игру внутри экселя, примеры есть.

Сейчас массивы данных хранят в json, но в принципе можно использовать и xml, который экселем откроется. Тут вопрос в том, что далеко не все переменные в табличном виде отобразятся вменяемо. Ну и начнется гемор с кодировками и представлением десятичных точек. Ни разу у меня гладко не проходил экспорт без таких глюков. Что-то быстро решается, что-то долго.

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


  • 0

#20 Nikvodup

Опубликовано 15 Декабрь 2016 - 18:27  

Nikvodup

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 669
  • Сообщений: 2 551
  • Откуда:От верблюда

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

  • Мы можем включать\выключать свет. Никак на геймплей не влияет, если только представляет геморрой для реализации светящихся кнопочек.
  • Следующим шагом прогреваем мотор. 30 условных игровых единиц, пока он прогревается, мы можем лишь общаться с диспетчером, проверять системы и т.д.
  • При взлёте без разрешения нас сбивают. Потом это можно от нефиг делать развить до того, чтобы диспетчер экстренно интересовался о нашем незапланированном поведении, затем нас тащили бы в охранку и т.д.
  • При посадке мы тоже запрашиваем разрешение, и там первое время стоит заглушка – случайный кубик на да\нет. Со временем мы добавляем честный трафик с прописанным АИ как в Космических Рейнджерах. Сначала создаём простую схему "отоварюсь там-сброшу здесь", потом от нефиг делать учим его потихоньку следить за ценами и делать прочие осмысленные манёвры – заторы будут уже честные. Возможные в будущем челноки-подчинённые тоже будут летать честно.
  • Боя изначально не будет. Никогда не понимал так раньше симулятры. Мне казалось, что симулятор должен принадлежать жанру мистики. Объектом мистики там выступал бы бой. Старпёры собирались бы в кружок, и рассказывали молодняку как они видели Бой. А молодняк такой, во пердуны заливают. Меня же уже со второй миссии заставляли мочить козлов. То есть бой поначалу это что-то из ряда вон выходящее. Потом его можно развить до того, чтобы мы управляли системами, а не просто пиу-пиу – но как это сделать, в душе не представляю.
Spoiler


  • 0

#21 El.

Опубликовано 15 Декабрь 2016 - 23:26  

El.

    Штатный Советник

  • Завсегдатай
  • ФишкаФишка
  • 158
  • Сообщений: 576

Притом работает он в двух направлениях. Первое, это из таблицы в код: я нажимаю ячейку, создаю там из разных параметров новый возможный для игрока выбор, и оно само прописывается в код, или каким-то иным образом туда вносится. Это спасает нас от кучи глюков, так как я очень невнимательный, и в любом моём кодировочном этюде вылезает как минимум пара багов. Второе, это противоположенное движение, из таблицы в игру. Я щёлкаю по ячейке, выбираю один из уже прописанных там выборов, и все изменения прогоняются по всей игре. Скажем, я убил глобальную фракцию, и все ячейки с ней становятся недоступны для последующего мной изменения, сереют. Или я убил Джека, и дом теперь не построен, вместо него стоит лес. А ячейка с домом\лесом сама теперь выдаёт нам новые выборы, в зависимости от того, стоит там лес или дом, что повлияет дальше на следующие и т.д (ну, как обрабатываются зависимости в Экселе). И вот, накликав так всю игру, я захожу в неё, и проверяю, всё ли так. Это сильно упрощает её отладку, позволяет настругать развесистое древо глобальных выборов, и спасает уж от невнимательности при создании выборов с идеологической точки зрении. Но вся эта, конечно, затея, пока, в лучшем случае, абстракна до ужаса, и советы тут вряд ли помогут.

Тебе нужны:

1) дерево выборов (прототип)

2) сериализация/десериализация (проще всего в xml)

3) редактор дерева

4) фабрика по постройке игровых состояний на основании сохраненного дерева (файл сохранения)

5) вьювер дерева выборов текущего game state

 


Кстати, видел, как чувак на околоПаскале танчики сделал (аналог battle city), с одновременным полётом снарядов и движущимися симпотными танками. Просто понятия не имею, как он это сделал, но круто.

Это делается через такое понятие, как game loop. Если упростить, то итерация состоит из следующих частей:

- засекли время, прошедшее с прошлой итерации

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

- отрисовали кадр


Изменено: El., 15 Декабрь 2016 - 23:30

  • 0

#22 Nikvodup

Опубликовано 17 Декабрь 2016 - 07:04  

Nikvodup

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 669
  • Сообщений: 2 551
  • Откуда:От верблюда

Это делается через такое понятие, как game loop. Если упростить, то итерация состоит из следующих частей:
- засекли время, прошедшее с прошлой итерации
- обновили математическую модель (координаты снарядов, танчиков и т.д.) на основании прошедшего времени, включая обработку коллизий.
- отрисовали кадр

Ну ты, по-моему, сейчас заумными терминами описал довольно банальную концепцию – обновляй экран 20 раз в секунду, отрисовывая текущее состояние движка. Такое могут позволить себе фаны-фанфары современные движки, но не может Паскаль. Отрисовывай ты хоть попиксельно, хоть объектами – тут всё будет жутко мерцать (да и в C++ такое я видел). Плюс, мы не можем просто взмахнуть волшебной палочкой, мы познаём все методики с нуля – тут, извини меня, вполне себе котируется тактика "отрисуй линию цветом фона (сотри), а потом нарисуй её на пиксель правее", а нам тут про прогонку кадра в секунду (итерацию). Именно поэтому, меня это впечатляет здесь, и не впечатляет в любой игре. Именно поэтому, возможно, многие современные игры тормозят даже в меню – разрабы разнежились, и забыли истоки. Возможно я переоценил объектно-ориентировочное программирование, это всё только для удобства, например я вот как раз сейчас сделал довольно длинный тип, и мне надо такой же, но чуть другой. А для того, чтобы создавать неизвестное кол-во объектов, надо создать для них "склад" с запасом, и потом каждый поштучно прогонять каждую секунду. Или что-то другое. В любом случае, если бы я не ленился "читать", я бы тут прочитал: там и танчики, и взрывы, расходящиеся пятью лучами от стены (то есть уже формулой), и звуки. То есть на экране появляется\исчезает много "объектов", и всё это описано в коде довольно лаконично.


Изменено: Nikvodup, 17 Декабрь 2016 - 07:19

  • 0

#23 El.

Опубликовано 17 Декабрь 2016 - 18:49  

El.

    Штатный Советник

  • Завсегдатай
  • ФишкаФишка
  • 158
  • Сообщений: 576

обновляй экран 20 раз в секунду, отрисовывая текущее состояние движка. Такое могут позволить себе фаны-фанфары современные движки, но не может Паскаль.

 
Так работают все нормальные графические api типа directx и opengl, ибо по другому обновить проекцию трехмерной сцены (та самая картинка, что видит юзер на экране) )в принципе невозможно. Непонятна твоя одержимость паскалем. Хочешь простую игру сделать без помощи движков - используй C# (WPF) и иже с ним. Что-то сложнее - чистый directx/opengl.
 

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

В ООП это делается через наследование, вынеся общие признаки в базовый класс и плодя потомков на любой вкус.
Что-то типа:

Spoiler


Изменено: El., 17 Декабрь 2016 - 19:04

  • 0

#24 Nikvodup

Опубликовано 02 Январь 2017 - 13:40  

Nikvodup

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 669
  • Сообщений: 2 551
  • Откуда:От верблюда

Сейчас глянул недавний Коммандос про самураев. Движки из-за этих больших мониторов какие-то громоздкие стали, хотя сами здания клёвые. Но вот как раз обидно, что не развиваются. Кинуть камень для отвлечения – чит. Почему бы не сделать более жизненную реакцию нпс – это хорошему АИ программисту на пару дней работы, да и интересно жеж. Посмотрел ещё тут Диабло 1 с Мишкером, и чем-то меня захватила та система. Качай силу – круче доспехи, качай ловкость – круче боёвка, качай жизнь – не сдохнешь с пол тычки, качай интеллект – можешь книжки магии изучать (а они тут случайно выпадают). Притом, если повезёт, можно такую купить и у торговца. При хорошем балансе кучки золота даже в кайф будет поднимать. В своё время игра мне не понравилась – не мой тип игрушчины, играл чуть позже чем надо, да и клёвой музыки, на которой тут зиждется пол игры, не было. Притом я думал, что это игра одиночной направленности – убитые монстры, как и игра, сохранялись. А оказалось, что её тут можно "сбрасывать" на манер второй, и в итоге самое сильное заклятие из арсенала мага мне даже не выпало. В итоге я монстров на последних уровнях вёл с одного конца карты – в другой, превращая в камень и постреливая, а иначе они бы меня просто как тузик грелку. Самого же Дьябло я убил секунд за пять, воспользовавшись заклинанием, которое у меня было ещё в самом начале, и которым я не пользовался всю игру. Ну, а так как я не программист (и не только не потому что не программист, а потому что и с бумажками (информацией) справляюсь через пень колоду), решил сваять простенькую, но возможно интересную зарисовку о трёх героях с прокачкой навыков от применения, где чувак, одевший лук, сначала эффективно бил бы лишь на клетку, но имел огромный потенциал. Бья с руки ты бы качал силу, дающую доступ к танковым навыкам и доспехам. А если бы ты долго никого не бил, у тебя бы качалась механика, и ты бы конструировал потом всякую хрень (балалайки, дуды). Но вот беда, в графическом режиме (поле – квадратиками, и может быть каким угодно по размеру – хоть на коробку пиши) нельзя создать текстовое окно лога битвы. Вернее можно, но графические шрифты (рисуются пикселями) у меня русский не поддерживают. Есть решение? Кстати, вот тут чувак ругает ООП. Их конечно сложно читать, они слишком умные.


А всё, вроде отменяется. Там только попиксельный шрифт – английский, а растровые, или как их там (которые рисуются лучами) – есть среди них и русские. Зато понял, почему Виндовс удаляет так, как удаляет. Я ещё давно где-то читал, что при удалении папки, Windows не удаляет всю папку целиком, а просто стирает там первый байт, показывая системе, что эти данные можно затирать. Хоть я и не придавал этому значения. Сейчас вот, не знаю как поступали разработчики Героев, но я своё поле сделал так, что каждая ячейка его включает в себя все возможные состояния юнита – громоздко в плане памяти, но позволяет абстрагироватья от конкретных героев, и работать с тем, что туда вбросят. Тут бы мне как раз пригодилось ООП, ибо некоторые объекты дублируют друг друга, но не совсем. И одним из ключевых параметров любой ячейки поля, как и любого туалета, является "занято", то есть стоит ли там какой-нибудь юнит, или нет. И стоит (а мне девчоночка не звонит, не звонит, а мне встречаться с ней не стоит, не стоит) только юниту сойти с этой клетки, как я лишь просто меняю -занято- с true на false. А все другие параметры я даже не трогаю, игра всё равно считает эту клетку пустой, и они затрутся, как только сюда ступит другой какой-нибудь юнит. Вот так вот я раскусил самого Билла Гейтса. Ахой Билл.


  • 0

#25 Nikvodup

Опубликовано 03 Январь 2017 - 15:01  

Nikvodup

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 669
  • Сообщений: 2 551
  • Откуда:От верблюда

В этот раз чувствую, что, делаю просто для удовольствия, а не для результата, поэтому работа будет продвигаться очень медленно. Достиг версии-чекпоинта, и там и буду исправлять, если что.
Исходник в этот раз старался снабжать комментариями, и делать компактным. Хотя к концу не выдержал и начал уже исправлять по месту проблемы, что загаживает код, деля его менее гибким.
Сейчас можно адекватно выбирать героев (чтоб убрать выделение - тыкните ещё раз), бегать по полю на две клетки, атаковать врага на клетку (в т. ч. и по диагонали, ему надо пять ударов), после его убийства мы встаём на его клетку. Враг пока просто от нас убегает. Захотелось, видя его такие мансы, добавить ещё какие-нибудь шахматные моментики, типа окружения, но сейчас точно не до этого. Проскочил разок визуальный глюк, но не уловил его природу. Добавил заставки из "леталки". Чтобы выйти, встаньте на третий столбец поля битвы. Не знаю пока, как решить проблему логистики, чтобы не проходить сквозь своих и чужих.
Баланс пока накумекал такой:
-стартовые хп 2, стартовая атака 1. У врагов атака 1-3.
-найдя лук с атакой 3, герой получает возможность стрелять на три клетки (уменьшая урон: 100-50-25%)
-стреляя из него, есть одно-процентная вероятность качнуть ловкость, одно её очко будет добавлять 10%, со временем увеличивая дальность.
-атакуя мечом, мы с той же вероятностью качаем силу, нужную для доспехов. Те будут давать только танковые и прочие навыки.
-стоя рядом с врагом, но не атакуя, мы с тем же шансом качаем знание, нужное для того, чтобы собирать из деталей всякие дуды и балалайки.
-с этими балалайками мы будем давать бонусы игрой, и продолжать и дальше играть в прятки со смертью, стоя рядом с врагом.
-до АИ ещё даже не доходило, но он точно будет выбирать цель с меньшим кол-вом хп.
-получая урон, у нас тот же шанс увеличить на единичку нашу жизнь (можно добавить какие-нибудь гильдии, увеличивающие этот шанс)
-героев, естественно, можно перепрофилировать как угодно - лишь качай нужные навыки, сменив свою роль на поле.
-уровней опыта пока не будет (не знаю, как совместить с прокачкой навыков).
-мирных убегающих врагов можно было бы добавить (всё-таки мы поначалу слабые, а мне это где-то нравилось), но для текущей игровой ситуации она уберёт связанные с прокачкой трудности.
-было бы неплохо замутить доп. пласт геймплея со всякими мастерскими для барда и прочим, но, тут уж я действительно, один в поле не воин.


  • 0




Привет!

Насколько мы поняли, вы используете блокировщик рекламы в вашем браузере. Скорее всего, это AdBlock или AdBlock Plus.

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

Однако Riot Pixels — пока ещё небольшой сайт, мы существуем в основном на деньги, получаемые от различных рекламодателей. Пользователей же с установленным AB/ABP на Riot Pixels сейчас — более 30%. Это очень много.

У блокировщиков рекламы есть еще одно плохое свойство — у вас может «поехать» дизайн или перестанут показываться скриншоты.

Мы не хотим предпринимать активных действий в отношении блокировщиков рекламы (например, закрывать контент) — это не по-человечески. Однако и безучастно смотреть никак не можем. Поэтому у нас к вам большая просьба — пожалуйста, внесите Riot Pixels в «белый список» вашего блокировщика. Это поможет нам и дальше жить и развиваться, а вам ничего не будет стоить.

Спасибо!
Команда Riot Pixels.