Как выбрать язык программирования для разработки звуковой игры?
Я слепой. У нас есть звуковые игры. Гонки, шутеры и т. Д.
Я хочу разработать такую игру, как Call Of Duty, но без графики.
У меня проблемы с выбором языка программирования.
Я знаю основы C ++, C #, Java и Python.
Я не могу использовать игровые движки, такие как Unity или Unreal engine, потому что они используют визуальные редакторы, которые мне не доступны.
Я могу создать свой движок.
Мне нужно:
Уверенность в том, что мой проект будет иметь достаточную производительность.
Высокоуровневое программирование. Мне не нравится работать с памятью. Я хочу написать игровой алгоритм.
Кросс-платформирование желательно, но не обязательно. Главное, чтобы мой проект работал на Windows.
Я хочу, чтобы моя игра была опытом на языке программирования. Чтобы я мог использовать язык программирования, с которым я буду разрабатывать игру для других задач.
Меня интересуют математические и физические библиотеки. Чтобы вычислить 3D, для движения, поворотов и т. Д.
3D-звук.
Клавиатура.
Простая работа с сетью.
Я решил выбрать один из языков программирования, с которым я знаком. Вот что я думаю о каждом из этих языков программирования для своей задачи:
C ++ - идеальное решение. В C ++ есть много библиотек и функций. Но у C ++ есть много возможностей и способов реализации. По этой причине я не знаю, сколько мне нужно знать на C ++ для разработки игр. Я знаю основы, переменные, условия, циклы, массивы, функции, ООП. Но у меня проблемы с указателями. Сейчас я не могу этого понять. Строуструп в своей книге «Программирование, принципы и практика с использованием C ++» сказал, что лучше использовать C ++ без готовых решений. То есть, если я хочу использовать библиотеки и API, C ++ - это не очень хорошее решение. Но меня привлекает C ++, потому что он высокопроизводительный. И имеет много библиотек.
C # - хорошее решение для Windows. Но он привязан к NET. Многие библиотеки портируются под C #, но я не уверен, что это будет работать, как и на C ++. C # проще, чем C ++, и мне это нравится.
Java - хороший кросс-платформенный язык программирования. Но я слышал, что производительность Java ниже C #. Я не уверен, что Java может решить мои задачи.
Python - это язык программирования, с помощью которого я могу решить многие задачи. Мне нравится, что в Python нет необходимости использовать ООП, но есть проблема. Я не знаю, как в версии 3 Python, но в 2 версии Python он имел плохую производительность.
Я хочу услышать ваше мнение.
sim3x, питон любят за комфорт писанины... (я не вкусил)... но когда речь о скорости - все абсолютно, потупив глазки, отводят их в сторону и молчат
питон якобы крут для научных расчетов, но лишь простотой программирования, есть новый язык от ученых для ученых - julia, типа лучшее от фортрана, Си.. и тд.. кстати.. на главной же странице, есть бенчмарки, где даже луа чмырит питона...
.. другой вопрос, что язык (julia) как бы не айс для не-научных а потребительских разработок... даже под линукс, про винду вообще можно не вспоминать
sim3x, вообще то я все написал - функциональные фишки питона позволяют делать компактный код (! не исполняемый.. исходный... ) но они же и гробят производительность
я обожай функциональный стиль, сам в шарпе пишу максимально используя приемы функционального стиля.. пробовал F#, Nemerle... но просто утверждение
Проблема с производительностью была решена лет 5 назад.
не верно.. а потом вы встряли... ну и .. слово за слово..
Привет! Мне кажется Вы зациклены на производительности. Все перечисленные языки не были бы столь популярны, если бы их производительность в среднем не покрывала требования пользователей и разработчиков. Уверен, что написать движок можно на любом из них.
Строуструп в своей книге «Программирование, принципы и практика с использованием C ++» сказал, что лучше использовать C ++ без готовых решений.
По поводу API и библиотек: они используются почти везде и, скорее всего, в Вашем проекте тоже будут. Не читал Страуструпа, т.к. это не мой профиль, но предполагаю, что он мог сказать подобное в академических целях либо в то время, когда разработка преимущественно была направлена на написание своих решений с нуля. В реальных проектах всё не так, зачем заново открывать африку если уже есть хороший функционал и им можно воспользоваться. Конечно, это не касается тех задач, когда, например, пишутся чистокровные фреймворки. Но Вы уверены, что Вам нужно именно это? Особенно не имея хорошего опыта.
ИМХО, если Вас интересует именно реализация алгоритма, то незачем париться насчёт доступа к памяти и производительности, по крайней мере пока.
C # - хорошее решение для Windows. Но он привязан к NET.
Немного позащищаю здесь c#. Майкрософт сейчас движется в нужном направлении кроссплатформенности, посмотрите на net core.
Не хочу, чтобы казалось будто я топлю только за c# :) Просто хотел развеять некоторые заблуждения и поделиться тем, с чем знаком. Мой совет: попробуйте разбить проект на небольшие части и начните его реализовывать, многие вопросы отпадут.
Ben_r007, вам нужна работа с вводом и с объемным звуком, на достаточно производительном языке на кросс-платформенном фреймворке. MonoGame отвечает этим требованиям. Нет такой моногейм-полиции, чтоб заставила вас использовать спрайты.
Если вы пробовали и удостоверились, что MonoGame вам не подходит, я с удовольствием выслушаю, что именно там не так.
Об объёмном звуке. Есть замечательная библиотека irrKlang.
О MonoGame. В MonoGame я могу создать отдельный класс, ну как пример
public class Player
{
public double x;
public double y;
public double z;
public int turn;
public player()
{
x = 0.0;
y = 0.0;
z = 0.0;
turn = 0;
}
}
Потом в игровом цикле передвигать этот объект в 3D пространстве, с поворотами и т.д, без использования сторонних физических движков. Могу ли я в MonoGame писать игру, полностью не юзая спрайты и прочую графическую хрень, которая мне не нужна?
По сути я могу разработать свой игровой движок, но тогда встают несколько вопросов:
Как создать окно? Могу ли я создать окно в C#, используя например DirectX? Либо может ли мне подойти для игры Windows Forms? Если да, как превратить его в полный игровой экран и сделать его чёрным?
Какие библиотеки имеют 3D вычисления. Есть ли Bullet Physics под C#?
Я со звуком не работал, но по описаниям стоит посмотреть на Supercollider. Язык ориентирован на звук, много унаследовал от SmallTalk, но сдвинулся в функционального программирования.
Вспомнил еще библиотеку overtone для Clojure. Для игровой логики Clojure, наверно, будет удобнее, чем Supercollider. Они между собой как-то умеют взаимодействовать, но подробностей я не знаю.