Войти
ПрограммированиеФорумОбщее

Движок на c# / c++. С блек джеком и без велосипедов

Страницы: 1 2 Следующая »
#0
(Правка: 22:58) 0:48, 5 авг 2022

У меня возник вопрос, а что на c# из адекватного есть по движкам, чтобы и клиент красивый без боли и сервер собрать?
Страйд нельзя использовать на сервере т.к. там рендер вшит глубоко(как мне сказали разрабы сами). Юнити на сервере... ну думаю тут найдутся те кто ей все кости перемоет, для меня только отсутствие многопотока без костылей уже решает все
Флакс как вариант, но крайне неудобная система компонентов и инструментов мало или они крайне странно сделаны, а в остальном он вроде даже неплох (если есть знатоки поделитесь опытом разработки)
Годо как флакс по аргументам за и против

Вот я и подумал, может имеет смысл скрафтить из готовых частей движок, а не устраивать многолетнюю разработку своего САМОГО лучшего движка, ой, то есть велосипеда.
Для нормальной разработки сетевых игр на C#.
Идея в том чтобы как можно меньше велосипедов писать.
В голове это выглядит так:
C# + C++ либы для самых нагруженных мест которые можно 1 раз собрать и забыть
Частичная модульность (адепты полной модульности не бейте, не хочу чтобы люди думали о совместимости модулей и ядра или модулей и модулей, а к этому все и придет)
Дата ориентированность, во славу серверной части
Headless мод без костылей
ECS без приколов и грязи
PhysX или bepuphysics
И где то достать рендер готовый на DirectX или Vulkan и допилить его под движок
Интерфейсы и часть инструментов так же где то уже есть в готовом виде, хоть из тех же опенсорс движков взять
Система построения пользовательского интерфейса... главная боль всех движков, есть идея взять облегченный html движок и позволить пилить как в вебе, только кроме js что бы можно юзать шарп было

Поучаствовали бы в такой затее или я очередной клоун со своим никому ненужным движком буду?

Если что пишите в личку

p.s.
Пока для себя решил идти в сторону страйда, попробую выпилить все из инита ядра и как то в модули вынести, чтобы они добавлялись галками условно на уровне редактора. Там проблем может много возникнуть, но думаю это легче чем собирать франкинштэйна

#1
(Правка: 2:09) 2:06, 5 авг 2022

vector_of_herecy
> скрафтить из готовых частей движок
смотри Godot, "скрафчен", тксзать, из готовых частей движок
можешь потом mono на это натянуть и будет тебе C#
а не, уже натянули

Standard version
64-bit (x86_64)
32-bit (x86)
Mono version (C# support)
64-bit (x86_64)
32-bit (x86)

https://godotengine.org/download/windows

#2
2:32, 5 авг 2022

#!
Да, мне частично нравится годо, но интерфейс там... лучше промолчать, с движком только кодом можно без боли взаимодействовать. Еще там не самая быстрая физика, но это уже мелочи по сравнению с итерфейсом и нодовой системой компонентов

#3
(Правка: 9:30) 9:05, 5 авг 2022

vector_of_herecy
> В голове это выглядит так:
> C# + C++ либы для самых нагруженных мест которые можно 1 раз собрать и забыть
нуда, нуда. Еще надеть розовые очки. Пока в реал-проекте не протестируешь эти либы, придется иногда "вспоминать".


> Страйд нельзя использовать на сервере т.к. там рендер вшит глубоко(как мне
> сказали разрабы сами).
> Флакс как вариант, но крайне неудобная система компонентов и инструментов мало
> или они крайне странно сделаны, а в остальном он вроде даже неплох
Пробовал собирать многие из современных движков. При большой нелюбви к исходникам нереального адекватно собрались только UE4 2.7x (пару подпроектов там не собрались всего) и Urho3D.
Остальные либо тупо не собирались, либо оказывались после сборки неработающим или плохоработающим куском дерьма. Вангую, сейчас налепят посты про кривые руки.

> Идея в том чтобы как можно меньше велосипедов писать.
Знаешь норм крестовые либы? умеешь их собирать? - го, расскажи здесь, что и для каких целей можно применить.

> Дата ориентированность, во славу серверной части
В чем суть именно?

> Headless мод без костылей
Что это? Знаю только безголовых из Серьезного Сэма

> ECS без приколов и грязи
Запарила эта абревиатура

> PhysX или bepuphysics
Первый можно выкинуть - дофига замороченный. Лучше Bullet или ODE

> И где то достать рендер готовый на DirectX или Vulkan и допилить его под движок
Ну да, где-то может он и есть

> Интерфейсы и часть инструментов так же где то уже есть в готовом виде, хоть из
> тех же опенсорс движков взять
> Система построения пользовательского интерфейса... главная боль всех движков,
Что имеешь ввиду под интерфейсами - редактор карт или UI? Не совсем понятно.

> Поучаствовали бы в такой затее или я очередной клоун со своим никому ненужным
> движком буду?
Че сразу клоун, затея может быть нормальной ... кстати да, какова цель? под какие типы игр движок собрался лепить?

#4
(Правка: 10:28) 10:24, 5 авг 2022

0xBADCODE
> Вангую, сейчас налепят посты про кривые руки.
сам всё знаешь

>Запарила эта абревиатура
это стандарт, ни кто не виноват что ты не умеешь в ecs

#5
11:01, 5 авг 2022

vector_of_herecy
> но интерфейс там... лучше промолчать

Так ты и так по сути молчишь.
> без костылей ... без приколов и грязи ... крайне странно сделаны
Ну т.е. стороннему человеку крайне сложно понять, чем ты недоволен, и как бы видел "правильный" движок.

В годо, пожалуй соглашусь только с медленной физикой, для чего-то масштабного, может не хватить.
Однако там есть gdnative и модули, и прикрутить Physx не проблема. Хотя многим и так хватает.

А самое главное, движки - они для игр. Игра у тебя какая будет?

#6
12:05, 5 авг 2022

Stride

#7
12:26, 5 авг 2022

А почему обязательно сервер тоже нужно делать на юнити? Я просто делал в свое время расшареным протокол. Писал клиент на юнити, а сервер и вовсе на винформс.

#8
(Правка: 12:40) 12:31, 5 авг 2022

HolyDel
> клиент на юнити, а сервер и вовсе на винформс
и приходилось всё дублировать, начиная от сериализации
как-то тоже довелось работать на таком "гибридном" проекте, шарпер за мной потом всё переписывал т.к. писать на С# в стиле С++ или наоборот некомильфо

ну хотя сейчас уже можно писать на C++ как будто на C#, всё-таки новые стандарты делают своё дело
правда атрибуты и делегаты до сих пор приходится изобретать на плюсах

#9
13:37, 5 авг 2022

и втё таки шарп гораааааздо медленнее чем ц плюц плюц

#10
(Правка: 15:20) 15:19, 5 авг 2022

vector_of_herecy
> C# + C++ либы для самых нагруженных мест
Не нужны тебе плюсы для этого. шарп отлично справляется. Но для таких частей как сеть нужно иметь приличную экспертизу в этой области чтобы был толк.

ivashko
> и втё таки шарп гораааааздо медленнее чем ц плюц плюц
При экспертном знании и того и другого, а еще горы опыта в предметной области - да.
Без всего этого на шарпе ты раза в три быстрее напишешь работаюший код со средними показателями производительности.

#11
(Правка: 15:35) 15:34, 5 авг 2022

Mephistopheles
> на шарпе ты раза в три быстрее напишешь работаюший код со средними показателями
> производительности.
думаю, что в 5. А производительность на C++ будет быстрее раз 100-1000. Как-то раз я заменил немножко кода в движке на C# на dll на С++. FPS вырасло с 0.5 до 30.( Да, комп был слабеньким.) Но небольшое средство механизации подняло быстродействие в 60 раз (в 60 Карл!). И это была только маленькая примочка, не считая затрат на передачу данных из C# в dll.

#12
17:25, 5 авг 2022

Ты так всё здорово описал в общих словах... и это значит, что ты этим всем не пользовался, и не знаешь реальных проблем.
Ты сначала определись, для чего ты хочешь движок. Сразу для всего — не получится. Ты даже, кстати, не уточнил, 2д или 3д.
Вот давай сходу! Вот ты хочешь сервер. А будет твой сервер поддерживать несколько сцен одновременно? Типа, чтобы несколько игроков в одной сессии находились на разных сценах? Unity так из коробки не особо умеет. А UE это не имеет делать вообще концептуально (это противоречит понятиям level и player controller). Поддержка лобби будет? Глобальный чат? Личные сообщения? Сколько ты планируешь игроков на сервере? Какая будет модель обработки данных (доверяет сервер клиенту или нет)? Что с предсказаниями? Сервер реального времени или пошаговый? Dedicated, lan, hot seat, split screen — что из этого поддерживаем?

#13
(Правка: 18:05) 17:55, 5 авг 2022

ivashko
> думаю, что в 5. А производительность на C++ будет быстрее раз 100-1000.
в лучшем случае 10-15%

ivashko
> Как-то раз я заменил немножко кода в движке на C# на dll на С++. FPS вырасло с
> 0.5 до 30.
жуткий же говнокод у тебя был в шарпе:) Предположу что софтрендер. Я самосвал говна навернул пока не заставил шарп ренедерить 4к видео в 60 фпс:) А это просто картинку из памяти вывести на форму нужно было

pahaa
> Типа, чтобы несколько игроков в одной сессии находились на разных сценах? Unity
> так из коробки не особо умеет. А UE это не имеет делать вообще концептуально
1 левел = 1 инстанс сервера

Ну а если уровни маленькие то, то можно их раскидать по одному мегауровню. В анриле для этого есть dynamic level streaming или как то так.

pahaa
> Поддержка лобби будет? Глобальный чат? Личные сообщения? Сколько ты планируешь
> игроков на сервере?
сторонний сервер на какой ни будь гавноде:) А вообще это обычная практика социалку выносить на отдельный сервер от геймплейного.

#14
18:17, 5 авг 2022

Mephistopheles

1 левел = 1 инстанс сервера

Откуда ты знаешь, что ТС хочет именно так? Может, он хочет для диаблойда движок делать?

Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее