Zab
> Нет ничего плохого в паттернах, если человек уже дорос до потребности в них.
> либо заниматься программированием, либо изучать уже готовые решения
Это тоже паттерны.
Человек решает задачу. Голая математика.
Человек записывает решение для компьютера. Синтаксис и грамматика.
Человек запускает решение на компьютере. Энциклопедическое знание мат.части Операционной Системы.
Эти три действия связаны очень слабо. Пожалуй, только по конечному результату. И паттерны плохи тем, что устанавливают лишние связи.
Просто, не надо стесняться отвергать то, смысл чего не видишь. Потом увидишь, может быть. А пока ознакомился, где-то отложилось в памяти, что такое существует - и ладно. Когда придет время будешь знать где искать.
Zab
> Просто, не надо стесняться отвергать то, смысл чего не видишь.
Пардон. Видимо, хотели написать обратное.
gudleifr
> Пардон. Видимо, хотели написать обратное.
Написал именно то, что хотел.
Применение технологий не по назначению - зло. Хрустальная ваза - очень плохой молоток.
Не видите если для чего оно вам лично нужно - наверняка примените как-то не так.
Ознакомиться полезно, чисто для эрудиции. Чтобы потом не пришлось велосипед изобретать, когда он вам таки понадобится.
Zab
Вы слишком усложняете.
Одна из проблем, которую я себе сам создал, это попытка всё минимизировать (количество рабочего материала в проекте).
Например: Есть объект монетка и рядом с ней отображается цена апдейта. Различных апдейтов три штуки. И вместо того, чтобы сделать три монетки (разных объектов) для каждого апдейта, я пытался при помощи кода создавать необходимую информацию и привязки, использую всего один объект монетки.
На картинке девять интерактивных объектов. А я их пытался сделать тремя. Прописывая в коде различные условия. Например, если у экземпляра такие-то координаты, то он выдаёт одни показатели и отвечает за такой-то апдейт. Если другие координаты, то за другой апдейт.

gudleifr
> Поэтому и предложил начать с тетрадки
Мда. Писать в тетрадке так, что б “работало” - не выходит. Этот приём уже для опытных.
Дело в том, что я даже когда пишу в самом движке, то не знаю, как всё будет функционировать, пока не нажму Play. В половине случаев я делаю методом тыка и подбора.
711
> Этот приём уже для опытных.
Нет, для самых начинающих. У опытных - тетрадка в голове.
711
> В половине случаев я делаю методом тыка и подбора.
Это не потому, что Вы слишком умный или глупый, а потому, что Вы спрашиваете "как сделать похоже" а не "как надо для дела". В этом и состоит цель маркетоидов от программирования - "делай по-нашему, или сдохни".
На юнити допустим, ты можешь сделать один префаб со скриптом(где все объекты одного апдейта) и его на канвасе дублируешь еще 2 раза.
Если я понял правильно, что все апдейты видны одновременно.
711
> И вместо того, чтобы сделать три монетки (разных объектов)
И то бред, и то фигня.
Делаешь массив объектов (апдейтов), в котором хранишь всю информацию об этих апдейтах. Если понадобится больше трёх - потом просто добавишь ещё элементы в этот массив по уже готовому шаблону.
Пишешь отдельно функцию отображения одного апдейта, куда передаёшь индекс этого апдейта в массиве. Эта функция отрисовывает апдейт с нужными изображениями и координатами, получая их из объекта в массиве, обращаясь по переданному индексу. Если потом захочешь сделать не вертикальный список апдейтов, а горизонтальный - просто изменишь значения в массиве апдейтов без изменения кода самой программы.
В цикле вызываешь нужное количество раз функцию отрисовки, передавая туда индекс цикла. Всё.
@711 ты на юньку перешёл?
в контексте англицизмов, было бы удобнее вместо "апдейт" использовать "улучшение"
потому что само слово "апдейт" в игровых движках переиспользуется для технических нужд.
соответственно:
зы: но твоя текущая реализация, это классическое решение, когда логика и отображение взаимосвязаны.
skalogryz
> было бы удобнее вместо "апдейт" использовать "улучшение"
А если в следствии апдейта произошло ухудшение? Как быть в такой ситуации? Чем слово "обновление" внезапно перестало устраивать?
Погроммист
> Чем слово "обновление" внезапно перестало устраивать?
skalogryz
> потому что само слово "апдейт" ... переиспользуется
зы: да и "обновление" "за монеты", это вопрос, уже после релиза. А здесь, пока что, путь к релизу
gudleifr
> Вы спрашиваете "как сделать похоже" а не "как надо для дела”
Да откуда ж мне знать, что спрашивать, что б это было "для дела" ?
Чтобы что-то спрашивать, нужно уже что-то знать. А у меня каждый шаг - это в новинку.
lol
> префаб со скриптом
Префабы в юнити удобная штука. И недавно префабы сделали в GameMaker. Но я ещё не обновлял движок и не успел их опробовать.
elcar
> Делаешь массив объектов (апдейтов),
Сделать массив с перечнем названий или цифр через запятую, а потом просто обратиться к нужной ячейке, чтобы её поместить в переменную - это я могу. Но чтоб там хранить всю информацию по апдейтам, то я даже не представляю, как это нужно всё записывать.
> Эта функция отрисовывает апдейт с нужными изображениями и координатами.
Я вот уже с этим столкнулся - отрисовывать элементы при помощи кода. И скажу что это просто ужас.
Всё должно быть визуально-наглядно. Как в Фотошопе. Что б выделил мышкой и подвинул в нужное место.
skalogryz
На юнити я прям переходить не планирую. Но в этой теме (после этого прототипа) я постараюсь писать о своих примерах именно из юнити. И они будут исключитель 3D. Вот сейчас пытаюсь придумать супер простую игру для разминки.
> "апдейт" в игровых движках переиспользуется для технических нужд.
Да, понимаю.
Погроммист
> А если в следствии апдейта произошло ухудшение
Как не странно, но в этой игре будут ухудшения. Но контролируемые.
После покупки улучшения можно будет откатиться назад (и в будущем менять настройку в доступном диапазоне уже бесплатно для определённых целей).
Пример: Разброс снарядов. Большой разброс может быть как отрицательным, так и положительным эффектом.
711
> Да откуда ж мне знать, что спрашивать, что б это было "для дела" ?
Для этого и нужна тетрадка.
711
> Но чтоб там хранить всю информацию по апдейтам, то я даже не представляю, как это нужно всё записывать.
Для этого даже придумали формат под названием JSON. Вот как это выглядит в моих:
{"units":[
{"id":0,"name":"Мотобайк","type":"earth","cost":10,"HP":3,"OP":4,"OD":2,"damage":1,"range":1,"soundatt":13,"side":0,
"soundmov":6,"image":"./images2/build/bot43.png","fire1":{"w":30,"h":30,"speed":10,"stills":
["./images2/effect/shot1.png","./images2/effect/shot2.png","./images2/effect/shot3.png","./images2/effect/shot4.png",
"./images2/effect/shot5.png"]},"fired":60,"up":9,"init":8,"addatt":{"add":[[-1,-1],[1,1],[-1,1],[1,-1]],
"rem":[]},"abilites":[{"name":"Помехи","desc":"С 50% шансом защищают от дальней атаки.","type":"useunit",
"cost":1,"once":1,"img":"./images2/abilites/aicon2.png","animobj":{"w":70,"h":70,"speed":10,"stills":[
"./images2/abilites/effect/cr1.png","./images2/abilites/effect/cr2.png","./images2/abilites/effect/cr3.png",
"./images2/abilites/effect/cr4.png","./images2/abilites/effect/cr5.png"]},"soundabil":15}]},
{"id":1,"name":"Огнекар","type":"earth","cost":10,"HP":4,"OP":4,"OD":1,"damage":3,"range":2,"soundatt":1,"side":1,
"soundmov":6,"image":"./images2/build/bot46.png","fire1":{"w":40,"h":40,"speed":10,"stills":
["./images2/effect/cl1.png","./images2/effect/cl2.png","./images2/effect/cl3.png","./images2/effect/cl4.png",
"./images2/effect/cl5.png","./images2/effect/cl6.png"]},"bullet":"./images2/build/bul.png","bw":6,"bh":20,
"expl":{"soundexp":2,"w":30,"h":30,"speed":10,"stills":["./images2/effect/clo1.png","./images2/effect/clo2.png",
"./images2/effect/clo3.png","./images2/effect/clo4.png","./images2/effect/clo5.png","./images2/effect/clo6.png",
"./images2/effect/clo7.png","./images2/effect/clo8.png","./images2/effect/clo9.png"]},"fired":20,"minrange":1,
"up":10,"init":6,"addatt":{"add":[],"rem":[]},"abilites":[{"name":"Пробой",
"desc":"Стреляет вперёд на 3 клетки. Наносит по 2 урона врагам на линии.","cost":1,"once":1,"img":
"./images2/abilites/aicon8.png","type":"useunit","soundabil":1,"helpcell":{"add":[[0,-1],[0,-2],[0,-3]],"rem":[]}}]},
]}