Понедельник, 20 Мая 2024, 04:53

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » alexsilent [931]
Результаты поиска
alexsilentДата: Четверг, 02 Января 2020, 15:55 | Сообщение # 141 | Тема: Есть ли возможность создавать сокращённые функции на C#
почти ветеран
Сейчас нет на сайте
Хочу создать тонну своих глобальных функций, но обычно доступ к ним имеет много букв.
Например:
Код

Game.MyFunction();

сделав просто статичную функцию в скрипте Game

Но Можно ли сделать такую функцию, с более коротким названием?
Чтобы получать доступ к ней из любого скрипта без увеличения количества букв:
Код

MyFunction();


PS для меня сократить на 5 символов очень приоритетно, чем меньше букв, тем легче я понимаю что написано в скрипте.
Куда хуже начинаю воспринимать код, когда там постоянно эти длинные юнитовские команды типа
SendMessageOptions.DontRequireReceiver - это просто для меня издевательство, эти бесконечные поля из символов.
Я люблю сокращённые имена, как в старых добрых Basic и Lua скриптах)


Сообщение отредактировал alexsilent - Четверг, 02 Января 2020, 15:59
alexsilentДата: Четверг, 02 Января 2020, 15:39 | Сообщение # 142 | Тема: Нормальная ли практика использовать словарь внутри словаря
почти ветеран
Сейчас нет на сайте
Подумал, что для моего стиля программирования подходит хранить часть данных в словарях,
которые находятся в словарях. Нормальная ли практика использовать словарь внутри словаря на C#?

У меня это выглядит так в коде:


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

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


Сообщение отредактировал alexsilent - Четверг, 02 Января 2020, 16:07
alexsilentДата: Четверг, 02 Января 2020, 09:41 | Сообщение # 143 | Тема: Выбор темы на Конкурс №13
почти ветеран
Сейчас нет на сайте
Я недавно участвовал в конкурсе на итчио и пилил игру на одну кнопку на Tic-80 (наверное в этой теме ссылки оставлять нельзя на свои проекты, поэтому не буду), в целом забавно, но не достаточно разнообразно, хотя моя игра в разы продуманнее Флаппи Бёрдса, целую мини-рпг сделал, но всё же недостаточно гемплея.
Лучше пусть будут более продвинутые темы:
1) Игра в небольшой локации - звучит круто
2) Might n Magic тоже звучит неплохо
3) Тактики, стратегии, пошаговое перемещение, тот же гольф - пошаговое перемещение
4) псевдо 3D, большинство объектов будут просто спрайты в 3д пространстве, как в старых играх Doom или 2.5D играх,
даже сюда подходит Don't Starve и Knock-Knock


Сообщение отредактировал alexsilent - Четверг, 02 Января 2020, 09:48
alexsilentДата: Среда, 25 Декабря 2019, 04:57 | Сообщение # 144 | Тема: Defold как сделать низкое разрешение с оконным режимом
почти ветеран
Сейчас нет на сайте
А может кто знает, можно ли в Defold очень быстро создать игру с
1) низким разрешением, pixelperfect (все пиксели чёткие и желательно квадратные)
2) чтобы был оконный режим
3) разблокированная кнопка окна "Развернуть", и возможность менять размер окна вручную мышкой потащив за край окна,
и как бы не менял окно, то виртуальное разрешение всегда оставалось бы одинаковым
PS для меня, это самые удобные настройки для маленьких инди игр с низким разрешением, можно играть в офисе,
в любой момент развернуть и свернуть, никакого полноэкранного режима, можно и без Alt+Tab сворачивать игру

а то там как-то сложно, то ли нужно писать скрипт для отдельного режима, то ли я просто не разобрался,
я сам не программер, и не люблю тонкости программирования, но спокойно пишу код на Tic-80 и Lua


Сообщение отредактировал alexsilent - Среда, 25 Декабря 2019, 05:02
alexsilentДата: Пятница, 15 Ноября 2019, 03:35 | Сообщение # 145 | Тема: Какой жанр игр сейчас популярен?
почти ветеран
Сейчас нет на сайте
для этого надо просто зайти на гуглплей и айфоншоп и посмотреть что на первых местах держится

Сообщение отредактировал alexsilent - Пятница, 15 Ноября 2019, 17:14
alexsilentДата: Понедельник, 14 Октября 2019, 23:00 | Сообщение # 146 | Тема: Переход с UnityScript на Csharp для не программиста
почти ветеран
Сейчас нет на сайте
Хм... Потестил Dictionary из 1000 объектов по 1000 слотов в каждом скрипте, и вроде всё очень быстро считается.
Если взять таких 100 объектов по 50 переменных, то вообще нагрузки не замечу.

Добавлено (14 Октября 2019, 23:07)
---------------------------------------------
seaman, Спасибо Большое, гляну!

Мне просто, чем понравился Dictionary, то что помимо того, что это быстро работает, так ещё и вызывается такая "переменная" через string, то есть я могу в своём самодельном скрипте очень легко вызывать любую "переменную", любого объекта,
просто зная её название. В обычном классе будет затруднительно через string вызывать переменную,
но всё же гляну материал, хоть не люблю вникать в ООП, ибо это уже сложнее обычного Бейсика,
а моё программирование где-то на том уровне и осталось, но это не мешает делать игры,
давно пытался ещё читать книгу по С++ про наследование, и у меня тогда так голова разболелась)) ,
что решил оставить до лучших времён эту информацию.)

Ну по части оптимизации, у меня будет не так много объектов, не RTS делаю, и может быть не будет лагов, если Dictionary по 50-100 слотов на объект будет на каждом интерактивном объекте висеть. Если только там нет каких-то других подводных камней.


Сообщение отредактировал alexsilent - Понедельник, 14 Октября 2019, 23:16
alexsilentДата: Понедельник, 14 Октября 2019, 21:37 | Сообщение # 147 | Тема: Переход с UnityScript на Csharp для не программиста
почти ветеран
Сейчас нет на сайте
seaman, Спасибо! Тогда не буду этим пользоваться, на всякий случай!

Добавлено (14 Октября 2019, 21:42)
---------------------------------------------
У меня появился новый вопрос про Dictionary:
Могу ли я использовать Dictionary как заменитель переменных?
допустим у меня 1000 юнитов на поле, и у каждого юнита я добавлю свой массив Dictionary,
в этом массиве будут такие пункты при инициализации:
Код

public Dictionary<string,int> dict = new Dictionary<string,int>();
...
dict.Add("Health", 10);
dict.Add("Mana", 20);
dict.Add("Exp", 0);
dict.Add("Level", 1);
dict.Add("Team", 0);
dict.Add("Attack", 0);
dict.Add("Defense", 0);
dict.Add("Stamina", 0);


Не будет ли это проблемой? С точки зрения лагов или ещё чего-то непредвиденного?

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

Добавлено (14 Октября 2019, 22:22)
---------------------------------------------
Сделал 100 миллионов слотов Dictionary, и юнити завис)
Видимо так много нельзя создавать, просто делал стресс тест.


Сообщение отредактировал alexsilent - Понедельник, 14 Октября 2019, 22:23
alexsilentДата: Пятница, 11 Октября 2019, 04:48 | Сообщение # 148 | Тема: Переход с UnityScript на Csharp для не программиста
почти ветеран
Сейчас нет на сайте
Цитата drcrack ()
{a:f2}, b: {b:d3}


drcrack, Это шикарно! Мне бы весь список фич найти, может там что ещё полезное есть!
Пошёл гуглить просторы интернета) Спасибо!

Добавлено (11 Октября 2019, 04:52)
---------------------------------------------
Цитата drcrack ()
var абсолютно ничего не меняет в поведении переменной, он просто сокращает код (тип определяется автоматически исходя из того что стоит справа от =)


А что если делать неопределённую переменную? Допустим, я не знаю заранее будет ли это float,string или int,
можно ли так сделать, что введёшь в поле, такой переменная и станет? Или это слишком круто?!
Допустим я хочу просто оставить несколько полей пустыми, и не знаю какие переменные туда пока добавлю в класс,
и в зависимости от ситуации я бы добавлял нужные переменные, было бы очень удобно, особенно для своего самодельного
языка (чтоб скриптовать уровни на лету), где не знаешь какие переменные будут заранее.


Сообщение отредактировал alexsilent - Пятница, 11 Октября 2019, 04:52
alexsilentДата: Четверг, 10 Октября 2019, 14:09 | Сообщение # 149 | Тема: Переход с UnityScript на Csharp для не программиста
почти ветеран
Сейчас нет на сайте
drcrack, Спасибо большое за коррекции!

Добавлено (10 Октября 2019, 14:10)
---------------------------------------------
Цитата drcrack ()
это хз, первый раз вижу такую конструкцию


Это я где-то в сети подглядел, не помню)

Добавлено (10 Октября 2019, 14:11)
---------------------------------------------
Цитата drcrack ()
также в новых юнити уже давно работает интерполяция строк:
Код

// Debug.Log("Active Scene is '" + scene.name + "'.");
Debug.Log($"Active Scene is '{scene.name}'.");


Вау, вот эта штука офигенная! *__*

Добавлено (10 Октября 2019, 14:13)
---------------------------------------------
Цитата drcrack ()
адекватный вариант такой:
Код
var ase = obj.AddComponent<AudioSource>();


Тут кстати стоит var, а если это не локальная переменная,
и будет переменная использоваться пока не удалиться GameObject или текущий скрипт,
а не только в одном цикле, там тоже можно ставить var?
Хотя я походу просто перепутал фразу "локальная переменная", это для меня звучит как переменная на один цикл)
В конечном итоге можно, я думаю и так написать, если захочется получить доступ из другого скрипта:

Код
AudioSource ase = obj.AddComponent<AudioSource>();


Сообщение отредактировал alexsilent - Четверг, 10 Октября 2019, 14:20
alexsilentДата: Четверг, 10 Октября 2019, 13:50 | Сообщение # 150 | Тема: Переход с UnityScript на Csharp для не программиста
почти ветеран
Сейчас нет на сайте
drcrack, это да :3

Добавлено (10 Октября 2019, 13:52)
---------------------------------------------
Ну постепенно прогресс идёт)

Оформил до конца часто используемые строки кода с JS на C#,
чтоб потом отдельно на каждый вопрос не отвлекаться подолгу потратил пару суток на это:

alexsilentДата: Четверг, 10 Октября 2019, 12:41 | Сообщение # 151 | Тема: Переход с UnityScript на Csharp для не программиста
почти ветеран
Сейчас нет на сайте
pixeye, мне сложно с алгоритмами и другими около математическими вещами, потому медленно тут всё идёт, в отличии от творчества, рисования или анимации. Но за меня больше никто программировать не будет за бесплатно так долго, поэтому пришлось учить.)

Сообщение отредактировал alexsilent - Четверг, 10 Октября 2019, 12:43
alexsilentДата: Понедельник, 07 Октября 2019, 09:34 | Сообщение # 152 | Тема: Могу я загружать небольшую часть уровня?
почти ветеран
Сейчас нет на сайте
drcrack, спасибо!
Решил не париться так сильно, хотя жаль что нельзя загружать комнату из уровня.
Просто загружу всё сразу, и потом отключу комнаты, которые не нужны, и буду их включать по мере продвижения.
alexsilentДата: Воскресенье, 06 Октября 2019, 08:20 | Сообщение # 153 | Тема: Могу я загружать небольшую часть уровня?
почти ветеран
Сейчас нет на сайте
До сих пор не тестил SceneManager, можно ли там загрузить небольшую часть уровня?
Например у меня есть большой уровень из 30 комнат,
я хочу загрузить из этого уровня лишь одну комнату, не загружая все остальные, можно ли это организовать?


Добавлено (06 Октября 2019, 10:09)
---------------------------------------------
И второй вопрос (если первый вариант не возможен):
Можно ли получить доступ к игровому объекту в не открытой сцене?
Чтобы найти его и оттуда перетащить как-нибудь?!

Добавлено (06 Октября 2019, 10:32)
---------------------------------------------
Ну или третий способ:
можно ли как-то загрузить сцену, чтобы все объекты были не активны, а также не работали такие вещи как
OnDisable и OnDestroy потому-что у меня куча объектов с такими функциями, нужно чтоб объекты как будто были бы в спячке, чтоб из них выбрать то что нужно, а остальные объекты удалить безболезненно и без активации даже без включения Awake функций на всех объектах и OnDestroy?

PS нужен всего один из этих вариантов


Сообщение отредактировал alexsilent - Воскресенье, 06 Октября 2019, 10:34
alexsilentДата: Воскресенье, 06 Октября 2019, 04:16 | Сообщение # 154 | Тема: Переход с UnityScript на Csharp для не программиста
почти ветеран
Сейчас нет на сайте
Цитата drcrack ()
сейчас что ли как-то по другому называют людей которые пишут код на языках программирования?

drcrack, я просто не силён в сложные вещи, тот же ООП я только поверхностно использую.
И медленно пишу код. Надо было написать "для новичка/нуба",
но я уже лет 16-18 программирую, так что сложно назвать новичком,
но всё ещё мне сложно с программированием. crazy

Добавлено (09 Октября 2019, 13:12)
---------------------------------------------
У C# есть один плюс по сравнению с JS для меня:

Код
void MyFunction(int Num = 10) {}


наконец-то можно использовать переменные в функции по умолчанию,
то есть можно не указывать переменную в MyFunction(); если хочется получить значение по дефолту, это круто,
соскучился я по такой операции)

И пишу длинный список строк кода альтернатив, чтоб быстро вникнуть в C#:
alexsilentДата: Суббота, 05 Октября 2019, 10:59 | Сообщение # 155 | Тема: Переход с UnityScript на Csharp для не программиста
почти ветеран
Сейчас нет на сайте
Цитата pixeye ()
А не хочешь в сторону https://defold.com/ посмотреть?

Я как раз полгода назад Lua выучил, или уже почти год, не помню.
Учил на Tic 80, потом попробовал перейти на Defold, и застопарился там на нескольких вещах:
1) было плохо с оффлайн документацией, я не могу работать онлайн, отвлекает ютюб или другие вещи)
2) и как-то сложно с примерами игр, мне пришлось их из каких-то странных папок вручную перетаскивать
3) там сложно настроить PixelPerfect графику с низким разрешением, и чтобы можно размер экрана вручную
как угодно изменять, как например в Годот, в пару кликов все настройки меняются.
я потом решил вернуться и посмотреть побольше на Defold, когда его отполируют, но так пока больше не добирался)
надо бы как-нибудь проверить, чего там натворили за это время)

Добавлено (06 Октября 2019, 03:01)
---------------------------------------------
Нашёл в документации по словарям инфу, этот пример будет также хорошо работать в юнити?
https://docs.microsoft.com/ru-ru....ork-4.8

И раз тут два поля, значить это не будет видно в инспекторе? А можно сделать чтоб было видно?

Код
openWith.Add("txt", "notepad.exe");


Сообщение отредактировал alexsilent - Суббота, 05 Октября 2019, 11:04
alexsilentДата: Суббота, 05 Октября 2019, 10:35 | Сообщение # 156 | Тема: Переход с UnityScript на Csharp для не программиста
почти ветеран
Сейчас нет на сайте
А ещё мой аниматор персонажей с кучей анимацией выглядит намного чище,
чем классические сборки аниматора на юнити. Не паутина :P


Добавлено (05 Октября 2019, 10:39)
---------------------------------------------
Цитата pixeye ()
Вот тот же код просто по фреймворку без игровой логики

так намного проще) чем меньше кода, тем мне легче вникнуть)

Цитата pixeye ()
Все что тебе нужно знать о листах на начальном этапе это то что

В List мне ещё нужен был Push, то есть запихивание новой яйчейки в самое начало, сдвигая всех.
Но в этой теме уже объяснили как делать, хотя я ещё не тестировал тот метод)

Плюс, теперь мне нужно понять как работать с Dictionary, хочу вызывать яйчейку по имени, а не номеру.
Пошёл гуглить)

Добавлено (05 Октября 2019, 10:40)
---------------------------------------------
pixeye, Спасибо большое за советы! Я ещё почитаю про Actors Фреймворк! В целом, мне нравятся вещи, которые упрощают жизнь в программировании.


Сообщение отредактировал alexsilent - Суббота, 05 Октября 2019, 10:41
alexsilentДата: Суббота, 05 Октября 2019, 10:20 | Сообщение # 157 | Тема: Переход с UnityScript на Csharp для не программиста
почти ветеран
Сейчас нет на сайте
pixeye, почитал статью) прикольно) мне очень понравилось!
И мне тоже не нравится сложность меканима.
https://github.com/dimmpixeye/blog-ru/issues/2

Чтобы не мучаться с этими стрелочками я их просто не добавлял.
И запускаю анимацию скриптом:
Код

private var oldAnimMode  : String;
function Animate(AnimMode : String , SpeedCross : float) {
    if (AnimMode != oldAnimMode) {
  oldAnimMode = AnimMode;
  anim.CrossFadeInFixedTime(AnimMode,SpeedCross );
    }
}


то есть по сути, это просто самовольный запуск любой анимации, без раставления стрелочек,
все переходы анимации написаны по старому внутри скрипта) так намного удобнее для меня,
чем возиться с паутиной из стрелок)
alexsilentДата: Суббота, 05 Октября 2019, 09:57 | Сообщение # 158 | Тема: Переход с UnityScript на Csharp для не программиста
почти ветеран
Сейчас нет на сайте
Цитата pixeye ()
Это не абстрактно учебный проект. Мы сейчас всей командой поедем в мск на WhiteNights показывать игрушку


Звучит прикольно! )

Цитата pixeye ()
Ну если ты "пишешь языки программирования" то проблем у тебя быть не должно с кодом лол XDD


Ну если коротко, то скрипт разделяет текст по пробелам через Split
и ищет через switch какая это команда и потом работает определённая функция, это не так уж и сложно)
То есть это почти начальный уровень программирования, все сложные ООП штуки я категорически избегаю)

Добавлено (05 Октября 2019, 10:05)
---------------------------------------------

Цитата pixeye ()
Вот например обработчик простых стейт машин


Честно говоря я вообще не понял этот код. :'(
Тут какой-то нужен новый уровень понимания,
я пишу стейт машину простыми вещами, примерно так (сорри что JS, на C# быстро пока не могу писать):
Код

var state : String = "idle";
switch (state) {
case "walk": WalkFunction();break;
case "idle": IdleFunction();break;
}


А тут я просто не понимаю, например что за HandleUpdate
alexsilentДата: Суббота, 05 Октября 2019, 09:48 | Сообщение # 159 | Тема: Переход с UnityScript на Csharp для не программиста
почти ветеран
Сейчас нет на сайте
Цитата pixeye ()
// упрощение бойлерплейта GetComponent до Get. фигня но набивать символов меньше


про GetComponent мне понравилось) для меня впервую очередь это очень критично,
чем меньше символов, тем легче для меня читать код, а также писать быстрее намного...
Не люблю в юнити эти длинные команды типа:
Код
BroadcastMessage("Rename",Text,SendMessageOptions.DontRequireReceiver)
alexsilentДата: Суббота, 05 Октября 2019, 09:30 | Сообщение # 160 | Тема: Переход с UnityScript на Csharp для не программиста
почти ветеран
Сейчас нет на сайте
pixeye, больше всего в модах для юнити я боюсь отмены поддержки потом и сложные договоры.
Я не читал лицензионное соглашение по Актёрам ещё, может там всё в свободном доступе (это я просто назвал :) )
но пункт с поддержкой меня очень пугает, уже несколько хороших плагинов я перестал использовать на юнити,
потому-что авторы прекратили их поддерживать, они просто больше не запускаются на новых версиях юнити((
и поэтому решил пытаться сам всё изучать и даже написал
на JS свой собственный язык программирования внутри юнити, чтоб скрипты для уровней делать без компиляции,
проблема теперь в том, что надо на C# это всё переписывать(((

Хотя ради интереса мне интересно глянуть на Actors с точки зрения, насколько там легко создавать игры. :)
Похоже ли это на конструктор для дизайнера или всё ещё сложно для меня?!


Сообщение отредактировал alexsilent - Суббота, 05 Октября 2019, 09:38
Форум игроделов » Записи участника » alexsilent [931]
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг