Печально, в этом плане Game Maker и Godot выгоднее отличаются, ибо там всё заточено под уникальные мини скрипты.
ЦитатаVostrugin ()
Ещё можно попробовать внедрить какой-то скриптовый язык типа lua, но вряд ли будет выигрыш от этого
Я написал свой скриптер парсер, ибо не нашёл нормально работающий в новых юнити плагин с Lua, но написал криво: 1) у меня все переменные, которые должны работать с такими мини скриптами находятся в глобальном и большом Dictionary, не уверен хорошо ли это, но доступ к этим переменным универсальный (доступ откуда угодно и через String) 2) парсер медленный, ведь надо всё разделить через Split, сделать Replace некоторым символам, убрать tab и другие штуки и чем больше мини скриптов и больше кода там, тем медленнее работает 3) пришлось писать много кода, если захочется сделать ещё одну другую игру, то придётся большую цепь базовых скриптов переносить в новый проект, это всё как костыль выглядит PS Единственный плюс, всё это работает без компиляции, что очень радует, для мини скриптов это то что нужно, жаль лучше способа не придумал, но вдруг есть более простая альтернатива.
Сообщение отредактировал alexsilent - Четверг, 11 Июня 2020, 17:13
Хотя главная проблема вопроса была: как написать маленький скрипт на юнити? То есть нормально ли будет если у меня будет тонны скриптов типа, псевдокодом:
Скрипт у персонажа молочника, который после диалога откроет меню магазина:
Код
if (при использовании персонажа) { Talk("Привет! Как насчёт купить немного молока?"); OpenShop(); }
А вот второй микроскрипт, например у лавочки, при её использовании герой сядет на неё:
Код
if (при использовании лавочки) { Hero.SitOnIt(transform); OpenMenu("Подождать 1 час","Встать с лавочки"); }
Скрипты очень маленькие, неужели для каждого уникального персонажа и уникального объекта придётся писать отдельный скрипт с компиляцией или есть другой более простой выход?
Сообщение отредактировал alexsilent - Четверг, 11 Июня 2020, 16:40
Как проще писать небольшие уникальные скрипты для Unity, не мучая каждый раз себя компиляцией и не создавая сотни уникальных скриптов?
Например мне на уровне нужно при столкновении с кубом изменить переменную, и таких небольших уникальных примеров на многих уровнях наберётся очень много, неужели всегда надо создавать новый класс и писать новые строки, а потом каждый раз ждать компиляцию? Да и для каждого уникального уровня придётся создавать ещё один класс с уникальным названием, что тоже плохо ибо их может наберётся сотни.
PS до этого я делал парсер с вводом разных команд string, но поскольку я заранее не знаю у какого скрипта буду менять переменные и запускать функции, то обычно делал доступ через SendMessage и заранее заготовленную под каждую переменную отдельную функцию, но это очень много кода надо писать на все случаи жизни заранее, в отличии от того же Годот и Game Maker, где доступ к переменным и функциям намного легче, если я знаю что существует объект, то я уже могу получить переменную типа object.HP, даже не зная какой скрипт привязан к этому объекту, что очень удобно. Да и Годот вполне предназначен для написания уникальных микроскриптов, также как и Game Maker (хоть десятки новых скриптов делай на каждый уровень), а в юнити писать микро скрипты для каждого уровня и уникального интерактива кажется зашкваром. Или так многие делают?!
Сообщение отредактировал alexsilent - Четверг, 11 Июня 2020, 15:27
mishkagames, это был один из первых доступных конструкторов. Разрабы Construct раньше работали над этим движком, а потом ушли от Clickteam. На этом конструкторе вроде как сделали FNAF и что-то ещё известное, но я забыл. Как бы сейчас и правда есть много других альтернатив, но конструктор легендарный.)
Сообщение отредактировал alexsilent - Четверг, 28 Мая 2020, 16:41
Я просто уточню, если все так то, игра типа darkest dangeon по идее потходит под тематику? Если конкретнее у вас есть замок вы занимаетесь его постройкой, сборкой ресурсов подготавливаетесь лечитесь и только потом идете в подземелье с боссом и так по кругу до финального босса? Единственное что там под вопросом не во всех подземельях есть боссы, и не всегда поход в подземелье с боссом оканчивается боем(можно не дойти до босса и сбежать). Так можно?
Как мне кажется в Boss Rush темп намного жарче. Я уже не помню Darkest Dungeon, но кажется там есть момент долгого плутания по уже зачищенным локациям, короче лучше не делать в игре возвращение назад где нет монстров или где есть подряд 2 (и более) пустых локации, чтобы темп не провисал. А так из Boss Rush можно даже делать пошаговую стратегию при желании, лишь бы всё ещё было жарко куда бы ты ни пошёл, с небольшими перекурами в одну локацию между серией боёв. Во многих Boss Rush перекуры вообще случаются только тогда, когда персонаж погибает, чтобы прокачать заработанные очки после гибели.
Добавлено (27 Мая 2020, 05:01) ---------------------------------------------
Я лично хочу сделать такой гемплей: игра полу-метроид, то есть в игре есть лабиринт, в лабиринте есть несколько мирных локаций, где можно вкачаться или подлечиться, а между этими локациями есть много комнат с боссами или жаркими боями, в игре постараюсь сделать так, чтобы нельзя было вернуться назад, пока не дошёл до мирной локации, а уже от мирной локации выбираешь в какую сторону дальше топать, но даже если топать назад, то там воскреснут боссы или появятся новые (если смогу сделать случайно сгенерированных боссов)
Сообщение отредактировал alexsilent - Среда, 27 Мая 2020, 05:05
Ну управление движением тут можно делать в отличии от прошлого конкурса. Да и кнопок сколько угодно.
PS Хотя я как-то давно делал Boss Rush вообще без кнопок (но движение определялось позицией мышки, а стрельба автоматическая), лол)
Добавлено (26 Мая 2020, 09:52) --------------------------------------------- Возможно поучаствую. Но это не точно, в зависимости от завала на работе.
Добавлено (26 Мая 2020, 09:55) --------------------------------------------- Я тут подумал: А можно делать в Boss Rash гемплее паузы? Например время от времени будут попадаться трактиры с отдыхом и пополнением запасов/здоровья. И вообще я бы ещё хотел делать разветвление, типа сам выбираешь какие боссы и в какой стороне на тебя будут рашить.)
1) Дейлики и события с реальным временем в игре, которые заставляют тебя нарушать твой распорядок дня, больше всего бесит, когда игра требует обязательно зайти сегодня, это уже игра играет в нас, а не мы в неё...
2) Не люблю слишком долгий гринд, но умеренный гринд норм. Не люблю когда надо набирать слишком много опыта, чтобы достигнуть следующего уровня всё больше и больше, и чем больше длительность на прокачку, тем больше раздражает, лучше бы прокачка просто остановилась (на максимум 50 уровне например), чем вот так издеваться.
3) Бесят игры с постоянным онлайном, особенно если это сингл, а сами онлайн игры просто не могут дать того гемплея, который я люблю: *люблю, когда можно ставить игру на паузу *люблю проматывать время дня и ночи в игре, когда спишь или потерял сознание *люблю замедлять время (slow motion), это невозможно в мультиплеерных играх *люблю моды (и не только графические, но и на смену баланса и гемплея) этого часто нет в мультиплеерных играх *и чтобы другие игроки не портили атмосферу, как в том же TESO любители попрыгать по столам и в фонтане
Сообщение отредактировал alexsilent - Воскресенье, 03 Мая 2020, 11:15
Найс! Я тоже думал об одной идеи типа Шмапа, только там после выстрела корабль должен менять направление движения. Но у меня нет времени сейчас что либо на конкурс делать)
Нашёл интересный пример, создающий пиксельную эмуляцию листьев ветра на ветру. Но как понять, куда вставлять эти строки, не обучаясь сложному делу создания шейдеров? Лично я не осилю ещё один язык, я пока только C# обучаюсь, но так хочется понять, как реализовать подобную штуку, но тут не весь пример, а куски, и куда куски эти копировать, непонятно.
Сообщение отредактировал alexsilent - Пятница, 13 Марта 2020, 15:36
То есть, всё что в геймплей не входит может быть реализовано любым способом! (ну, в соответствии с остальными правилами конкурса, конечно же)
Гемплей может быть какой угодно, но управление должно быть только одной кнопкой, также можно кнопку зажимать или двойное нажатие делать, не важно, но кнопка должна быть одна.
Сделать игру на мобилу бесплатной. Привинтить рекламу. Дать денег ютюберам обозревающим мобильные игры, но не там, где смотрят адекватные игры, иначе не ютюберу ни поверят, ни игру ни посмотрят. Короче надо искать обозревающим трешь ютюбера или несколько.) Про другие варианты не знаю)
Сообщение отредактировал alexsilent - Вторник, 03 Марта 2020, 14:45
Жаль мышь нельзя использовать(( это сильно ограничивает. Хотя у меня получалось делать на другой конкурс с точно такой же темой, больше гемплея, чем один простой прыжок, RPG механика плюс платформер, правда я так и не доделал до полноценной игры и не успел на тот конкурс, делал на Tic80. Покажу, может кому-то механика понравится, чтоб использовать для своих проектов или другая идея придёт на этой основе)
https://tic.computer/play?cart=999
Сообщение отредактировал alexsilent - Вторник, 03 Марта 2020, 14:04
drcrack, лол) я просто с нуля архитектуру переписываю, с JS на С# , как раз думаю, как улучшить её, судя по комменту лучше не увлекаться большим количеством скриптов, у меня в прошлой игре было примерно 150 скриптов) Плюс мне тут только что посоветовали вообще не использовать Script Execution Order, подумываю больше не использовать системные команды типа Awake Start Update и FixedUpdate для важных скриптов, и возможно буду вызывать лишь из одного глобального скрипта. Переназвав эти переменные в Awaker, Starter, Updater, FixedUpdater, и из глобального скрипта для меня в нужном порядке вызывать эти функции, вместо автоматического вызова. Пока ещё не решил точно, может по другому сделаю, но хочу в этот раз сделать всё намного лучше, чем мой прошлый вариант. Учесть все подводные камни, что раньше не учёл.
Сообщение отредактировал alexsilent - Вторник, 28 Января 2020, 11:49
Хочу поменьше использовать Script Execution Order функцию, мне кажется если я там много скриптов повешу, то оно будет запутаннее работать, но это не точно, но на всякий случай избегаю лишний раз. И в связи с этим появился вопрос:
Если я запущу объекты в таком порядке:
Код
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class PreInit : MonoBehaviour { // Runs before a scene gets loaded [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] public static void LoadMain() { // init/create global and system objects/scripts GameObject.Instantiate(Resources.Load("Game")); GameObject.Instantiate(Resources.Load("HUDCamera")); } }
то Awake у них будет работать правильно, то есть скрипт у объекта Game пробудиться раньше, чем у HUDCamera. Но как будут работать Start, FixedUpdate и Update функции? Будут ли они в таком же порядке работать, то есть вначале всегда обязательно будет скрипт Game читаться, а потом всегда без исключений HUDCamera?
То есть мне нужен такой порядок запуска функций:
1 - Game Awake() 2 - HUDCamera Awake() 3 - Game Start() 4 - HUDCamera Start() 5 - Game Update() 6 - HUDCamera Update() 7 - Game FixedUpdate() 8 - HUDCamera FixedUpdate()
Это можно потестить, но я встречал такой феномен в других своих кодах, когда долго тестишь порядок работы скриптов в юнити, и всё нормально кажется, а потом вдруг однажды скрипт срабатывает не в том порядке, это происходит как-то хаотично, если не использовать Script Execution Order, не всегда понимаю отчего вдруг скрипты стали работать в хаотичном порядке. Или лучше всё-таки стоит использовать всегда Script Execution Order функцию, даже если 50-100 скриптов придётся туда запихать?
Сообщение отредактировал alexsilent - Вторник, 28 Января 2020, 09:52
а ты так пишешь как будто его еще в прошлой версии не было
да я только перехожу на новую версию, ибо раньше всегда сидел на старой юнити и пользовался JS, новые версии c 2017.3 кажется уже не поддерживают JS, сейчас переписываю на C#, пришлось принять как данность, что Application.LoadLevel больше не использовать)
Вообще я бы аккуратно с мультисценами работал) имхо гемороя от них часто больше чем пользы.
Я тогда вообще не понимаю зачем SceneManager придумали), лучше бы и дальше все пользовались Application.LoadLevel
А ещё я окончательно запутался как мне использовать SceneManager) пошёл гуглить уроки по этому менеджеру, а то у меня теперь сомнения: нужно ли выгружать старые уровни, чтобы загрузить новые, или автоматически всё происходит) полез искать примеры обычного аналога Application.LoadLevel
Сообщение отредактировал alexsilent - Четверг, 09 Января 2020, 13:57
ты можешь поставить их на отдельный слой и в настройках камеры отключить его рендеринг
А в таком состоянии работает ли рейтресинг или например функция OnMouseDown()? Потому-что у меня там много системных кнопок, которые можно случайно нажать. А мне этого не надо, потому и подальше отодвигаю объекты.