Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/120: Рейтинг темы: голосов - 120, средняя оценка - 4.95
 Аватар для koker007
59 / 52 / 11
Регистрация: 04.08.2015
Сообщений: 731

Библиотеки для создания игры на C#

28.07.2018, 10:16. Показов 27532. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, не могли бы вы подсказать библиотеки.
Ранее я писал игру на с++ и для создания окна использовал библиотеку GLFW у нее были функции создания окна, пользовательский ввод с мыши и клавиатуры, а для рисования в этом окне использовалась библиотека GLEW с шейдерным OpenGL 4+.

Сейчас я перехожу на C# и хотел бы найти бесплатные библиотеки для создания игр под C#
А именно:
1) библиотеки создания окна и пользовательского ввода-вывода
2) библиотеки рисования шейдерного OpenGL
3) библиотеки загрузки текстур в программу
4) библиотеки воспроизведения аудио, с возможностью наложения различных эффектов, как ревербрация, питч и т.п.
5) библиотеки работы с сетью по udp протоколу

Если что-то из этого знаете то скажите названия, а я гляну что они из себя представляют, спасибо за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.07.2018, 10:16
Ответы с готовыми решениями:

Библиотеки для создания AR приложения
Добрый день. Мне вообще нечего делать, поэтому я решил создать AR приложение. Никогда раньше не занимался разработкой под Андроид... ...

Библиотеки для создания плеера
Добрый день. Получил курсовую работу, на тему создания медиаплеера, всю теорию уже написал по компоненту TMediaPlayer но меня он абсолютно...

Какие нужны библиотеки для создания читов для онлайн игр?
Здравствуйте, недавно возник вопрос, А как собственно говоря делают читы для онлайн игр? Какие для них нужны библиотеки, какие методы...

24
Эксперт .NET
6690 / 4101 / 1607
Регистрация: 09.05.2015
Сообщений: 9,567
28.07.2018, 10:25
Unity.
0
Заблокирован
28.07.2018, 10:29
Someone007, немного не в тему, но если и Unity, то для его изучения я бы советовал посмотреть Unity C# уроки / #1 - Начинаем программировать.
0
 Аватар для koker007
59 / 52 / 11
Регистрация: 04.08.2015
Сообщений: 731
28.07.2018, 10:41  [ТС]
Юнити это игровой движок, мне нужны библитеки
0
Эксперт .NET
6690 / 4101 / 1607
Регистрация: 09.05.2015
Сообщений: 9,567
28.07.2018, 10:49
Цитата Сообщение от koker007 Посмотреть сообщение
Юнити это игровой движок, мне нужны библитеки
Зачем вам библиотеки, если все что вам нужно есть сразу и в одном месте в виде игрового движка?
Хотите изобретать велосипед? Пожалуйста, ищите библиотеки...
0
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
28.07.2018, 11:17
koker007, даже в ++ часто используют фреймворки,а не отдельные либы. Советую Юнити
0
 Аватар для koker007
59 / 52 / 11
Регистрация: 04.08.2015
Сообщений: 731
28.07.2018, 13:13  [ТС]
Потому что я хочу сделать игру на нейронной сети которая бы рисовала изображения в зависимости от того какую кнопку в данный момент нажимает игрок и в зависимости от того какие видео файлы были загруженны в эту нейронную сеть для ее обучения, эта нейронная сеть будет рисовать картинки (симулировать, придумывать), юнити здесь никаким боком не нужен, юнити предназначен для создания игр с определенным заранее заданным шаблоном которые разработчика загоняют в некоторые рамки. Предполагается что эта игра будет выдавать кучу дико смешных "багов" например если этой нейроннной сети скормить видео с дтп, то при симуляции (игре) перемешения игрока она будет на каждом перекрестке устраивать дтп, или решать задачи немного нестандартно с которыми ранее не обучалась, короче игра-програмка забавы ради, ничего подобного этой игре-нейронной сети пока нету. Так что наврятли смогу более доступно объяснить.
Мне просто надо названия библиотек, под вышеперечисленные задачи, которые будут подключены в visual studio, почему еще никто так и не написал ни одну? Никакие игровые движки не нужны.
2
Эксперт .NET
6690 / 4101 / 1607
Регистрация: 09.05.2015
Сообщений: 9,567
28.07.2018, 14:21
Цитата Сообщение от koker007 Посмотреть сообщение
юнити предназначен для создания игр с определенным заранее заданным шаблоном которые разработчика загоняют в некоторые рамки
Не согласен.

Вы так и не привели веских аргументов против Unity.
0
Эксперт .NET
 Аватар для Usaga
14071 / 9289 / 1346
Регистрация: 21.01.2016
Сообщений: 34,852
28.07.2018, 14:28
Цитата Сообщение от koker007 Посмотреть сообщение
Потому что я хочу сделать игру на нейронной сети которая бы рисовала изображения в зависимости от того какую кнопку в данный момент нажимает игрок и в зависимости от того какие видео файлы были загруженны в эту нейронную сеть для ее обучения, эта нейронная сеть будет рисовать картинки (симулировать, придумывать), юнити здесь никаким боком не нужен
Что в юнити не даёт вам использовать нейронную (или любую другую) сеть?
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
28.07.2018, 15:59
Так ту же GLFW т возьмиье для нее биндинги есть для с #
1
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,218
28.07.2018, 17:51
Интересная задумка. Так пишите на плюсах, само то для игры где активно используется графика.
0
 Аватар для koker007
59 / 52 / 11
Регистрация: 04.08.2015
Сообщений: 731
28.07.2018, 22:10  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Что в юнити не даёт вам использовать нейронную (или любую другую) сеть?
Дает все, но в этой ситуации юнити - это чертов якорь, вот будет там висеть монобехейвор в памяти, оно надо? для такой игры нужно быстродействие, потому что пока что на ходу да в реальном времени наверное даже на самом мошьном среднестатистическом потребительском пк получится симулировать картинку с разрешением примерно 200х300 (но это не точно), да и то придется большую нагрузку переложить на шейдеры, чтобы еще быстрее. Да и я уже писал игру напрямую в openGL так что так будет для меня быстрее, меньше возьни с разбирательствами и изучением.
А вообще сделать можно что угодно где угодно.

Цитата Сообщение от ТабуретY Посмотреть сообщение
Так ту же GLFW т возьмиье для нее биндинги есть для с #
Наконец то что-то похожее на ответ, но вот на официальном сайте только под плюсы http://www.glfw.org/download.html
Разве есть способ безболезненно конвертировать либу? (пока что не встречал таких программ конверторов)

Добавлено через 16 минут
Цитата Сообщение от IamRain Посмотреть сообщение
Так пишите на плюсах, само то для игры где активно используется графика.
Да, быстрее, но только если время не критично, дело в том что в плюсах приходится задумываться о распределении памяти и рациональности его использования, язык шарп берет весь этот мусор на себя и есть гораздо больше времени чтобы непосредственно заниматься логикой программы, нежели обдумывать как оно будет там в памяти лежать и вообще понадобится ли еще когда нибудь?. В общем, опять же, мне так удобнее.

Добавлено через 13 минут
Цитата Сообщение от Someone007 Посмотреть сообщение
Вы так и не привели веских аргументов против Unity.
Использование монобихейвора и есть по своей сути некий шаблон который работает по строгой заранее заданной задаче, в моем случае нужно писать с нуля, создавать свою собственную логику для работы программы используя разве что библиотеки которые соответствуют поставленным целям для создания этой игры. юнити же больше расчитан на создание всяких там 3D сцен, я не говорю что этого не получится сделать, я говорю что тут использование юнити будет не целесообразно. Юнити это все таки не панацея для создания всех возможных игр на свете.

Добавлено через 10 минут
Цитата Сообщение от Someone007 Посмотреть сообщение
Хотите изобретать велосипед? Пожалуйста, ищите библиотеки...
Да хочу, даже больше скажу, я считаю что сей процес очень даже полезен для игровой индустрии. Вы сами то не заметили что после появления юнити многие игры все как один стали похожи внешне? особенно в период 2012-2014 год.
0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
28.07.2018, 22:34
Цитата Сообщение от koker007 Посмотреть сообщение
для такой игры нужно быстродействие
Мммм.... ну так юнити даст больше производительности, чем библиотеки на c#.

Она заточена под сложные игры и уже нехило оптимизирована.

Ну и тебе не катит такая архитектура как ты задумал! Собрался нейронку и 3D запустить одной прогой? Нейронка выжрет все ресурсы.

Тебе нужно нейронку на сервере запускать. И клиентов к нему коннектить с других машин.
И тут опять Unity выигрывает))))
0
Эксперт .NET
 Аватар для Wolfdp
3781 / 1755 / 371
Регистрация: 15.06.2012
Сообщений: 6,516
Записей в блоге: 3
29.07.2018, 05:50
Цитата Сообщение от koker007 Посмотреть сообщение
библиотеки работы с сетью по udp протоколу
сокетьі в шарпе уже умеют в UPD, со всеми наворотами (например асинхронность).
1
Эксперт .NET
 Аватар для Usaga
14071 / 9289 / 1346
Регистрация: 21.01.2016
Сообщений: 34,852
29.07.2018, 09:00
Цитата Сообщение от koker007 Посмотреть сообщение
это чертов якорь, вот будет там висеть монобехейвор в памяти, оно надо?
И как это сказывается на производительности как это мешает использовать нейронную сеть?
0
 Аватар для HectorPrima
716 / 473 / 258
Регистрация: 19.12.2014
Сообщений: 1,801
30.07.2018, 05:56
Цитата Сообщение от koker007 Посмотреть сообщение
вот будет там висеть монобехейвор в памяти, оно надо?
Цитата Сообщение от koker007 Посмотреть сообщение
дело в том что в плюсах приходится задумываться о распределении памяти
"Или трусы одеть или крест снять" :-)
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10424 / 5154 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
30.07.2018, 10:13
Цитата Сообщение от koker007 Посмотреть сообщение
вот будет там висеть монобехейвор в памяти, оно надо?
MonoBehaviour нужен только для скриптов, которые прикреплены к игровым объектам сцены. Для остальных классов он не нужен.
Кроме того, Unity поддерживает вычислительные шейдеры, что для вашей задачи как нельзя кстати.

Ну а в целом по вашему списку конечно можно что-то найти, но будет гемора выше крыши:

1) Winforms
2) Любой продвинутый порт OpenGL (их полно, правда все посредственные)
4) irrKlang
5) Смотря для чего вам udp. Ну например SignalR. Или просто UdpClient.
3
[Bicycle Reinventor]
 Аватар для Exerion
332 / 270 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
30.07.2018, 12:27
Если не Unity, то MonoGame (кроссплатформенный опенсорс фреймворк). Не библиотека, но и движком я бы называть не стал, поскольку большую часть реализовывать нужно самому.
0
9036 / 2937 / 493
Регистрация: 05.10.2013
Сообщений: 7,959
Записей в блоге: 216
31.07.2018, 22:57
koker007, если я вас правильно понял, то вы ищите библиотеку, которая бы позволяла использовать OpenGL из C#. Я выбрал библиотеку OpenTK. Она имеет средства для создания окна, ввода-вывода, обёртка над звуком - OpenAL. Ещё её составе есть контрол OpenTK.GLControl, который можно располагать либо на форме WinForms либо на форме WPF. Тогда можно делать гибридные неигровые приложения с 3D графикой с всем обилием GUI контролов из WinForms и WPF и других средств .NET. Например, если вы делаете обычное C# оконное приложение в котором должна выводиться 3D графика. WPF средства для вывода 3D графики очень скудные. Там нет пиксельных/фрагментных шейдеров и других шейдеров тоже, а в OpenGL 3+ есть всё что нужно, а у вас уже опыт с шейдерным довольно долгий.

Библиотека OpenTK самая популярная, актуальная и развивающаяся из всех библиотек для биндинга с OpenGL. Она входит в состав MonoGame и Xamarin.

Можно в проекте создать папку Libs и закинуть в неё OpenTK.dll. Этот пример писует квадрат на OpenGL 3.3: DrawingSquare_OpenGL33Core.zip

MainWindow.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL;
 
namespace DrawingSquare_OpenGL33Core
{
    class MainWindow : GameWindow
    {
        private string vertexShaderSource = "#version 330 core\n" +
            "in vec2 a_Position;" +
 
            "void main()" +
            "{" +
                "gl_Position = vec4(a_Position, 0.0, 1.0);" +
            "}";
 
        private string fragmentShaderSource =
            "#version 330 core\n" +
            "precision mediump float;" +
            "out vec4 fragColor;" +
 
            "void main()" +
            "{" +
                "fragColor = vec4(1.0, 0.0, 0.0, 1.0);" +
            "}";
 
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
 
            Title = "Drawing a Square";
            Width = 500;
            Height = 500;
            GL.Viewport(0, 0, Width, Height);
 
            int vShader = GL.CreateShader(ShaderType.VertexShader);
            GL.ShaderSource(vShader, vertexShaderSource);
            GL.CompileShader(vShader);
            Console.WriteLine(GL.GetShaderInfoLog(vShader));
 
            int fShader = GL.CreateShader(ShaderType.FragmentShader);
            GL.ShaderSource(fShader, fragmentShaderSource);
            GL.CompileShader(fShader);
            Console.WriteLine(GL.GetShaderInfoLog(fShader));
 
            int program = GL.CreateProgram();
            GL.AttachShader(program, vShader);
            GL.AttachShader(program, fShader);
            GL.LinkProgram(program);
            GL.UseProgram(program);
 
            float[] vertices = { -0.5f, 0.5f, -0.5f, -0.5f, 0.5f, 0.5f, 0.5f, -0.5f };
 
            int vbo;
            GL.GenBuffers(1, out vbo);
            GL.BindBuffer(BufferTarget.ArrayBuffer, vbo);
            GL.BufferData(BufferTarget.ArrayBuffer, vertices.Length * sizeof(float), vertices, BufferUsageHint.StaticDraw);
 
            int a_Position = GL.GetAttribLocation(program, "a_Position");
            GL.VertexAttribPointer(a_Position, 2, VertexAttribPointerType.Float, false, 0, 0);
            GL.EnableVertexAttribArray(a_Position);
 
            GL.ClearColor(new Color4(0.3f, 0.2f, 0.3f, 1.0f));
        }
 
        protected override void OnRenderFrame(FrameEventArgs e)
        {
            base.OnRenderFrame(e);
 
            GL.Clear(ClearBufferMask.ColorBufferBit);
 
            GL.DrawArrays(PrimitiveType.TriangleStrip, 0, 4);
 
            SwapBuffers();
        }
    }
}
Program.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace DrawingSquare_OpenGL33Core
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var mainWindow = new MainWindow())
            {
                mainWindow.Run();
            }
        }
    }
}
1
9036 / 2937 / 493
Регистрация: 05.10.2013
Сообщений: 7,959
Записей в блоге: 216
31.07.2018, 23:18
Цитата Сообщение от koker007 Посмотреть сообщение
3) библиотеки загрузки текстур в программу
В этом туториале есть урок посвящённый тому, как загружать текстуры: http://neokabuto.blogspot.com/p/tutorials.html

Цитата Сообщение от koker007 Посмотреть сообщение
4) библиотеки воспроизведения аудио, с возможностью наложения различных эффектов, как ревербрация, питч и т.п.
Библиотека OpenTK имеет в составе обёртку над OpenAL. Нужно просто написать:
C#
1
using OpenTK.Audio.OpenAL;
В общем почитайте какие возможности есть у OpenAL в документации на OpenAL. Это очень богатая библиотека работы со звуком.

Цитата Сообщение от koker007 Посмотреть сообщение
5) библиотеки работы с сетью по udp протоколу
Для работы с сетью всё уже есть в составе стандартной библиотеки .NET
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2018, 23:18
Помогаю со студенческими работами здесь

Подскажите CMS для создания библиотеки
Извините, не нашел нужный раздел :-[, по этому пишу тут В общем интересует такая CMS: • удобное разложения материала по рубрикам...

Программа для создания электронной библиотеки
Здравствуйте. Думаю написать программу, которая бы помогла мне упорядочить мои материалы, хранимые на жёстком диске. Это должно...

Выбор библиотеки для создания проигрывателя
Всем привет. Вот собственно вопрос. Хочу создать музыкальный проигрыватель (mp3, wav, ...), сначала почитав про Direct (Show, Sound), решил...

Библиотеки для создания (отрисовки) схем
Здравствуйте, я бы хотел спросить есть ли какие либо библиотеки для создания(отрисовки) схем.Давайте темам вменяемые названия

Библиотеки C# для создания и обучения нейронной сети
Доброго времени суток! Подскажите пожалуйста есть ли на C# нормальные библиотеки для написания и обучения нейронной сети для решения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru