Size: a a a

RU Rust GameDev — русскоговорящее сообщество

2020 March 19

AL

Andrey @ozkriff Lesnikov in RU Rust GameDev — русскоговорящее сообщество
лично видел, как людей в ступор выносят реакционные атаки - "стоп, почему ход демонов начался? но надписи же не было! *ждет 10 секунд* а чего они дальше не ходят? *ждет еще пять секунд* опять мой оход? ничего не понятно" - т.п.
источник

AL

Andrey @ozkriff Lesnikov in RU Rust GameDev — русскоговорящее сообщество
чувствую, мне таки придется через боль и страдания таки изучит основы UX)
источник

L

Lain-dono in RU Rust GameDev — русскоговорящее сообщество
Andrey @ozkriff Lesnikov
они топорные, но точно решают поставленную задачу и всем понятны. надо тестить, конечно, но я легко представляю игрока, который тыкнет на конец хода, увидит что часть бойцов подсветилась и начнет дико тупить что от него игра хочет
Можно сверху большую кнопку прикрутить "закончить ход". При нажатии делать кнопку неактивной и заменить текст на "идёт ход противника".
источник
2020 March 20

o

operator in RU Rust GameDev — русскоговорящее сообщество
sectator: > `ozkriff`
> я, в принципе, не против добавить смену цвета кнопки конца хода и\или подсветку бойцов с оставшимися очками действий - но меня стремает, что это много для кого будет слишком неявными индикаторами.

> `ozkriff`
> они топорные, но точно решают поставленную задачу и всем понятны. надо тестить, конечно, но я легко представляю игрока, который тыкнет на конец хода, увидит что часть бойцов подсветилась и начнет дико тупить что от него игра хочет

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

AL

Andrey @ozkriff Lesnikov in RU Rust GameDev — русскоговорящее сообщество
Ок, ок, я же написал уже что еще подумаю. Вот триггернуло-то.
источник

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Crush_my_love
окейч гляну.
Трудно сказать, что лучше учить раньше. Имхо, раст. Ибо раст это как бы правильный С++, каким был бы С++ если Страуструп забил на совместимость с уродским С, а комитет по-настоящему развивал язык, а не добавлял новые фичи на кривой фундамент.

С++ это помойка парадигм, старых и новых подходов. Там у всех свои стандартные библиотеки, математические библиотеки, уйма кривых решений. Например, есть автовывод типов, но EpicGames предлагают его не юзать, т.к. в С++ неявные приведения типов по всюду и разделив 10.0 на 20 ты можешь внезапно получить 0(из-за интов и флотов). Или там нельзя вернуть из функции несколько вариантов значения(алгебраический тип данных, enum в расте), или несколько занчений(кортеж), поэтому там везде кривые  и опасные методы реализации этого. А ещё там копи-семантика, в отличие от move-семантики раста, поэтому он там копирует всё без конца и без конца вызывает деструкторы. Да и вообще там можно спокойно создать класс с неинициализованными полями, или обратиться к несуществующему элементу массива, а компилятор скажет "всё ок". Ещё там заюзаешь тип char, и надо будет открыть файла с русскоязычным именем.. и в рантайме он будет говорить, что такого файла нет, потому что чар поддерживает ANSI, но не юникод, и вообще там типы уродские вроде unsigned short int, длина которых разная на разных платформах. В общем, там полный бардак. И блуждая в этом бардаке, не научишься правильно программировать. Там везде нулевые указатели и указатели, а EpicGames вообще GarbageCollector прямо во внутрь классов встроили. Вообще не все понимают, зачем нужны ссылки, ведь от них особого профита нет, или скучно писать без конца const, (это подобно let mut в расте, но в расте по дефолту перменные иммутабельны, а в крестах мутабельны и для иммутабельности нужен конст). В С++ нет нормальных модулей, там приходится делать дубликаты сигнатур функций в .cpp файле, и там нужно так называемо предъобъявление, потому что компилятор долбанутый. Да что там, там даже вложенных  многострочных комментариев делать нельзя, и приходится удалять комментарии-документацию или иначе мучиться:

/*

некий код

/** Из документации: эта функция делает то-то *//
void MyFunction(..) {}

*/

А enum в крестах такой, что он толком как константа, ты его объявляешь:

enum State {
A,
B
}

а потом везде в коде можешь юзать напрямую A, а не State::A. И вообще там нет системы модулей, там нет use math::{PI, abs, sqrt}; Там тупо икнлюдил файл и получай уйму функций, которые имеют те же имена, как другие функции, например, твои.. Поэтому там везде префиксы и суффиксы вроде fabs. Правда поверх этого есть система namespace, но она тоже кривовата и все ею пренебрегают, например, Epic Games. Ты инклюдил хедер двига, и получаешь все типы двига, а не ue4::network::Packet. Правда появились более нормальные енумы — enum class.

Модели памяти у них общие, ниша одна.

Сейчас переходный момент и нужны оба языка. Причем часто фирмы тупо переучивают набивших шишки ++ков на раст. Сейчас как бы хотим раста — поддерживаем древний код на крестах, или иначе: думаем на расте, но пишем древний код на крестах.

С++ ничему хорошему не научит. Там и вообще не ясно, как писать то надо, там есть сотни рекомендаций, и все они друг-другу противоречат. А библиотеки.. будь добр качать как zip с какого-то сайта — никаких там пакетных менеджеров нет, а если и есть, то их тысяча и не все библиотеки доступны. И библиотеки все кривые.

Думаю, лучше научиться программировать на расте. А вот ООП(классы) придётся изучить из ++ -ов. А затем будет тошнить от этих старперов, которые пишут криво и твердят(придумали какой-то там раст зачем-то), от всяких уродский Code-стайлов, вида всё CamelCase как у Microsoft и Epic, от всего этого бардака и повседневных кривых решений, потому что никто не знает, что такое алгебраические типы данных.
источник

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Crush_my_love
окейч гляну.
А move-семантика в крестах тоже кривая(статья одна на хабре есть). И вообще, те, кто пишет на крестах и не знает других ЯП, из-за узкого кругозора лепят ужасный код, и решают уже давно решенные задачи самым жутким способом. Особенно смешно, когда они начинают придумывать свои языки программирования.
источник

AL

Andrey @ozkriff Lesnikov in RU Rust GameDev — русскоговорящее сообщество
Гм. Как-то излишне воинственно и фанбойственно кмк.
источник

C

Crush_my_love in RU Rust GameDev — русскоговорящее сообщество
Anton TrionProg
А move-семантика в крестах тоже кривая(статья одна на хабре есть). И вообще, те, кто пишет на крестах и не знает других ЯП, из-за узкого кругозора лепят ужасный код, и решают уже давно решенные задачи самым жутким способом. Особенно смешно, когда они начинают придумывать свои языки программирования.
Спасибо за такой развёрнутый ответ)
источник

is

ilya sheprut @optozorax in RU Rust GameDev — русскоговорящее сообщество
Anton TrionProg
Трудно сказать, что лучше учить раньше. Имхо, раст. Ибо раст это как бы правильный С++, каким был бы С++ если Страуструп забил на совместимость с уродским С, а комитет по-настоящему развивал язык, а не добавлял новые фичи на кривой фундамент.

С++ это помойка парадигм, старых и новых подходов. Там у всех свои стандартные библиотеки, математические библиотеки, уйма кривых решений. Например, есть автовывод типов, но EpicGames предлагают его не юзать, т.к. в С++ неявные приведения типов по всюду и разделив 10.0 на 20 ты можешь внезапно получить 0(из-за интов и флотов). Или там нельзя вернуть из функции несколько вариантов значения(алгебраический тип данных, enum в расте), или несколько занчений(кортеж), поэтому там везде кривые  и опасные методы реализации этого. А ещё там копи-семантика, в отличие от move-семантики раста, поэтому он там копирует всё без конца и без конца вызывает деструкторы. Да и вообще там можно спокойно создать класс с неинициализованными полями, или обратиться к несуществующему элементу массива, а компилятор скажет "всё ок". Ещё там заюзаешь тип char, и надо будет открыть файла с русскоязычным именем.. и в рантайме он будет говорить, что такого файла нет, потому что чар поддерживает ANSI, но не юникод, и вообще там типы уродские вроде unsigned short int, длина которых разная на разных платформах. В общем, там полный бардак. И блуждая в этом бардаке, не научишься правильно программировать. Там везде нулевые указатели и указатели, а EpicGames вообще GarbageCollector прямо во внутрь классов встроили. Вообще не все понимают, зачем нужны ссылки, ведь от них особого профита нет, или скучно писать без конца const, (это подобно let mut в расте, но в расте по дефолту перменные иммутабельны, а в крестах мутабельны и для иммутабельности нужен конст). В С++ нет нормальных модулей, там приходится делать дубликаты сигнатур функций в .cpp файле, и там нужно так называемо предъобъявление, потому что компилятор долбанутый. Да что там, там даже вложенных  многострочных комментариев делать нельзя, и приходится удалять комментарии-документацию или иначе мучиться:

/*

некий код

/** Из документации: эта функция делает то-то *//
void MyFunction(..) {}

*/

А enum в крестах такой, что он толком как константа, ты его объявляешь:

enum State {
A,
B
}

а потом везде в коде можешь юзать напрямую A, а не State::A. И вообще там нет системы модулей, там нет use math::{PI, abs, sqrt}; Там тупо икнлюдил файл и получай уйму функций, которые имеют те же имена, как другие функции, например, твои.. Поэтому там везде префиксы и суффиксы вроде fabs. Правда поверх этого есть система namespace, но она тоже кривовата и все ею пренебрегают, например, Epic Games. Ты инклюдил хедер двига, и получаешь все типы двига, а не ue4::network::Packet. Правда появились более нормальные енумы — enum class.

Модели памяти у них общие, ниша одна.

Сейчас переходный момент и нужны оба языка. Причем часто фирмы тупо переучивают набивших шишки ++ков на раст. Сейчас как бы хотим раста — поддерживаем древний код на крестах, или иначе: думаем на расте, но пишем древний код на крестах.

С++ ничему хорошему не научит. Там и вообще не ясно, как писать то надо, там есть сотни рекомендаций, и все они друг-другу противоречат. А библиотеки.. будь добр качать как zip с какого-то сайта — никаких там пакетных менеджеров нет, а если и есть, то их тысяча и не все библиотеки доступны. И библиотеки все кривые.

Думаю, лучше научиться программировать на расте. А вот ООП(классы) придётся изучить из ++ -ов. А затем будет тошнить от этих старперов, которые пишут криво и твердят(придумали какой-то там раст зачем-то), от всяких уродский Code-стайлов, вида всё CamelCase как у Microsoft и Epic, от всего этого бардака и повседневных кривых решений, потому что никто не знает, что такое алгебраические типы данных.
Спасибо, я себе это сохраню
источник

A

Adv0cat in RU Rust GameDev — русскоговорящее сообщество
Фигак 😄
источник

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Andrey @ozkriff Lesnikov
Гм. Как-то излишне воинственно и фанбойственно кмк.
Да просто я уйму лет про-ал из-за ++ и гейзенбагов, а затем на расте.. спокойно пишу свыше 10к строчек и всё прекрасно. Уж лучше 7 раз подумать и отрефакторить код, чем ловить неуловимые гейзенбаги.

А сейчас приходится писать на крестах к анриалу.. И мне ломают сформировавшиеся подходы грамотного программирования этими "рекомендациями":
https://docs.unrealengine.com/en-US/Programming/Development/CodingStandard/index.html

И вообще рубят крылья. Например, я даже включил тип OptionPtr. Так им трудно понять, зачем это. И то этот тип кривой из-за отсутствия паттерн-матчинга. Там делается так: if  ( my_var = my_pointer.match() ) { *my_var = 3; } else {..} но напрямую юзать my_pointer нельзя. Мб позже напишу статью на хабре о "впечатлениях".
источник

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Как раз я изначально "изучил" неизучаемые кресты, и писал неправильно.. и я как раз делал свой ЯП с девками =)) И движок игровой я делал. Хотя и на хабре статей полно по самопильным ЯП.

Потому и советую обходить кресты по-возможности и использовать их если действительно необходимо. Причём сам ЯП настолько кривой, что тупо писать правильный код там нельзя, поэтому советую подход: мы думаем на расте, пишем на ++. И делаем новые библиотеки (DLL, статические) на расте, а старый код поддерживаем.. но потом он отомрёт.
источник

AL

Andrey @ozkriff Lesnikov in RU Rust GameDev — русскоговорящее сообщество
Я к тому, что все очень категорично, нет ни слова о достоинствах плюсов и недостатках раста. Плюс, ко многим перечисленным описаниям недостатков плюсов опытому плюсовику не сложно прикопаться будет. Для "крика души" это еще норм, но если ты реально прям таким образом статью напишешь, то это будет антирекламой расту, потому что будет (довольно справедливо) воспринято многими как "растофанатики опять спамят". Проходили же уже.
источник

C

Crush_my_love in RU Rust GameDev — русскоговорящее сообщество
Я бы не стал учить кресты, еслиб не проблема их распртсранённости
источник

C

Crush_my_love in RU Rust GameDev — русскоговорящее сообщество
Поэтому настроение портится. Я вот читаю ща плюсовую книгу и прям засыпаю лол
источник

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Andrey @ozkriff Lesnikov
Я к тому, что все очень категорично, нет ни слова о достоинствах плюсов и недостатках раста. Плюс, ко многим перечисленным описаниям недостатков плюсов опытому плюсовику не сложно прикопаться будет. Для "крика души" это еще норм, но если ты реально прям таким образом статью напишешь, то это будет антирекламой расту, потому что будет (довольно справедливо) воспринято многими как "растофанатики опять спамят". Проходили же уже.
А какие у ++ достоинства как языка? Да никаких, как язык он говно. У него убогий дизайн, из-за которого всё валится. А костыли-нововведения только усугубляют ситуацию, делая язык ещё более сложным и непредсказуемым.

А вот куча библиотек на них, движков, софта, работы(за которую платят меньше, чем за тупой го).. так это просто потому что С 50 лет, крестам 40. В 90-х был перелом, когда некоторые не захотели больше страдать и перешли на Java и C#. И это не достоинства языка, это лишь "наследие".
источник

C

Crush_my_love in RU Rust GameDev — русскоговорящее сообщество
и отвлекаюсь на все раздражители
источник

AL

Andrey @ozkriff Lesnikov in RU Rust GameDev — русскоговорящее сообщество
Спорить поленюсь :)
источник

AT

Anton TrionProg in RU Rust GameDev — русскоговорящее сообщество
Andrey @ozkriff Lesnikov
Спорить поленюсь :)
так мне самому интересно, какие же у него достоинства.
источник