This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос C# clientside

darkagava

Участник портала
14 Авг 2024
9
0
6
Насколько имеет смысл писать клиент-сайд на c#? Cef условно уметь на react, а клиент и сервер сайды писать с#?
 

Vermilion

Мастер
29 Сен 2021
916
682
151
34
Как по мне, на C# слишком мало документации для этого, тем более если только начинаешь с этим разбираться
 
Реакции: m0v1l3

DaVilka

Гуру
16 Сен 2020
702
259
128
можно писать на c# на надо быть умным
 

darkagava

Участник портала
14 Авг 2024
9
0
6

Inoi

/dev/null
VIP
15 Окт 2020
3,238
2,025
208
35
Реакции: m0v1l3

Vermilion

Мастер
29 Сен 2021
916
682
151
34
Насколько это целесобразно и распространенно?
Не думаю, что это это может влиять на производительность. Тут нужно смотреть со стороны удобства и знания ЯП разработчика
 

kiraz

Специалист
17 Апр 2023
391
131
83
нету разницы, что у тебя на фронте. Свелте, реакт, вью. У тебя примерно также будет выглядеть обращение цефу, серверу и т.д., что с шарпа, что с тса какого-то. Как по мне клиент шарп очень даже ничего. Дело привычки. Зная как работает клиент ты, что на шарпе, что на тайпе будешь писать одинаково. Единственный жирный плюс, что в паблике существует дампер клиентских файлов только на джаваскрипт. Первое время на шарповом клиенте будет непривычно работать. Советую выбирать тайпскрипт потому что он элементарно чаще встречается на разных проектах. Тут можешь поглядеть как выглядит клиент шарп: https://www.youtube.com/@MipPesok
 

kiraz

Специалист
17 Апр 2023
391
131
83
p.s. видосов, сурсов и в общем материалов больше на джсе/тайпе
 

JJIGolem

Гуру
high coder
19 Окт 2020
226
285
142
Из весомых плюсов, пока нет дампов клиентских скриптов написанных на C#
 
Реакции: kiraz

JJIGolem

Гуру
high coder
19 Окт 2020
226
285
142
Да и API шарпа потихоньку обновляют. Если знаете шарпы, то я бы на шарпах писал и клиент и сервер
 

DaVilka

Гуру
16 Сен 2020
702
259
128
Кароче срыв покровов.
Начнем с минусов:
1) Мало документации и примеров. Так как большинство людей которые пытаются поднять проект берут уже готовые моды которые в большинстве на js, а новые ориентируются на документацию и пример то выходит так что на c# действительно мало кто пишет, по этому найти хорошего специалиста на c# будет на много сложнее чем на js.

2) Урезаные возможности. В связи с тем что в отличии от js в c# нету виртуальной машины - в клинтский коспилятор c# встроены искуственные ограничегия, на пример, ты не можешь использовать System.IO для любой манипуляции с файлами на компе игроков, что, конечно же, логично, но это накладывает другие не очевидные ограничения, ты не можешь использовать thread ты не можешь в полной мере использовать Assembly и рефлексию что очень печально, ограниченияс работы с типами и другие. Хотя тут могу сказать что в целом это не очень влияет на разработку но иногда бесит что ты не можешь что то сделать по человечески и тебя просто вынуждает городить костыли.
3) Неполадки в API и некоторые другие возможности. В c# отсутствует storage, по этому приходится прибегать к js и городить прокладки для доступа к ним из c#. Некоторые функции ГТАшные(на ходу не могу вспомнить но такие есть и их не одна штука) на c# не соответствуют по типам принимаемых аргументов или возвращаемых значениях, на пример, есть две функции кторые работают в связки, другая функция принимает аргумент который возвращает первая функция в результате выполнения, но в библиотеке рейджа иногда получается так что первая функция возвращает int а вторая принимает float, хотя согласно документации а та и другая работают с int, и это нельзя решить не приведением типов, не вызовом через invoke, потому что проблема в c# библиотеке рейджа и возвращаемые значения искаженны, сюда же пресловутые ref int когда должен быть reg int[] паралельно на js эти функции работают как надо и опят надо городить прокладки.

Из минусов что могу вспомнить это все.
Теперь плюсы:
1) Библиотеки и статическая типизация. Я понимаю что статическая и динамическая типизации не лучше и не хуже друг друга, они просто разные, но я считаю что конкретно для гта мультиплеера статическая типизация подходит лучше в связи из огромным количеством гта апи, ты сразу видишь что они принимают что возвращают и понимаешь как с ними работать, а наличие отдельных библиотек для сервера и клиента сразу дает понят что у тебя есть и чего нет и как с этим работать в отличии от js где попробуй еще натыкать где что и как работает, где надо вызывать position а где getCoord, ведь ide любезно предоставляет все насвете апи ко всем обьекта независимо от наличия definitions.

2) IDE. Наличие статической типизации дает возможность IDE гораздо эффективней помогать тебе в разработке, ты легко можешь посмотреть где инициализируются обьекты, где и как используются методы, помогать в инициализации обьектов и методов, подсказывать где ты делаеь что то не так, переименвоывать функции не переименовав таким образом все на свете функции в проекте с таким именем, не нужно каждую строчку кода тестировать на работоспособность в игре. Заимствование файлов: одни и теже классы, энумераторы, интерфейсы могут "заимствоватся", на пример у тебя кастомная система ивентов где ты ивенты прописал в енум как нормальный человек, на клиенте ты можешь заимствовать этот файл, таким образом изминения в этом файле будут распрастранятся на все проекты сразу где этот файл заимствован. Скрипты перед/после компиляции, где ты можешь манипулировать файлами и их содержимым и много чего еще.

3) Хорош из завода. Ты создал проект неткор 3.1, подключил рейджовскую дллку, кликнул пару настроек для компиляции и погнал работать. Не нужно иметь дела с кучей настроек проекта, модулями их версиями, обновлениями

P.S. Ошибки и исключени. Не обработанные исключения которые будут возникать на клиенте не будут вылазить в окно как на жсе, а любезно записыватся в файл в папке рейджа
Все что вспомнил сходу
 
Реакции: enotit и youngBeaver

Fumarie

Активный участник
27 Июн 2024
81
29
40
23
Подозреваю, что никто в здравом уме не начнет писать проект, содержащий более 50 строк кода на чистом JS без тайпскрипта. Таким образом первые 2 плюса в сравнении с тайпскриптом больше не плюсы и получается, что плюсов остаётся почти 0
 

Fumarie

Активный участник
27 Июн 2024
81
29
40
23
Я бы в целом рекомендовал писать все на одном языке, благо тайпскрипт это позволяет.
Во первых любой твой разработчик будет понимать код в любой части системы, что позволит ему провести хотя бы поверхностное ревью, посмотреть как работает система чтобы лучше понимать то с чем он работает, да и поправить какой-нибудь баг, если ответственный за эту часть разработчик по какой-то причине не может это сделать.
Во вторых ты можешь шейрить код между частями системы, если он нужен и там и там, не переписывая попросту один и тот же класс на разные языки.
 

21thyear

Участник портала
23 Дек 2023
2
0
16
Я, конечно, возможно отвечаю уже на решенный вопрос топик-стартера, однако, все же скажу. Сам я начал заниматься RAGE.MP разработкой недавно, пишу Cleint/Server Side на С# и могу сказать что документации моментами не хватает, однако, порог входа сюда достаточно низок. В самом начале была проблема с подгрузкой пакетов NuGet, которые сами не хотели становиться в нужные места.

Если сравнивать по объему документации, то конечно C# проигрывает. Однако, на нем писать удобнее чем может показаться. Сама документация максимально похожая с JS(что можете увидеть). Из трудностей, что, если вы ранее не знали Си подобные языки, то начать будет достаточно трудно.
 

Vermilion

Мастер
29 Сен 2021
916
682
151
34
Сам начинал изучать Rage c мода RedAge, но перешел на TypeScript, лично для меня намного удобнее и быстрее. Не спорю, что кому то удобнее и быстрее на C#. На вкус и цвет так сказать.
 
Реакции: darkagava и 21thyear