Добрый день, реактор!
Сразу перейду к делу. У меня в мыслях было создать полутекстовую (текст + картинки/гифки) игрушку. Ничего особо сложного. Сам я в программировании +- новичок, но что-то умею. Языки на которых работал это С++, С#. Последнее больше нравится.
Мне необходимо найти язык+движок, на котором будет легче всего осуществить, то что я хочу сделать. Движок не должен ограничивать меня и при этом быть не слишком сложным. Требования к связке язык/движок:
1. Наличие темной темы в итоговом приложении. Т.е. дизайн должен регулироваться мной. По типу Кнопка.Цвет = темный. На WPF от C# чтобы получить темное приложение на выходе нужно морочиться. Я там установил плагин от Google, MaterialSkin или что-то вроде. Хотел было обрадоваться, вот она темная тема уии, но хер там. Во-первых верстка самого окна происходит в светлой теме, т.к. темная настраивается при запуске приложения через строку в коде, а во вторых она блядь не соответствует фактическим размерам. Т.е. то, что я вижу в окне конструктора окон != то что на выходе. Ну это имхо неиграбельно.
2. Умение менять цвет текста как на всяких играх написанных на Twine. Это выглядит прикольно и хотел бы этим воспользоваться. На том же C# нужно перегружать методы, и в самом коде это выглядит скорее как костыль, нежели как здоровое решение.
3. Одно из самых важных моментов. Динамическое создание модульных окон. То есть, на вход дается картинка+текст+выбор из 2х кнопок. Приложение генерирует окно, с этим содержимым и возвращает результат в зависимости от нажатой кнопки. В C# WPF можно понаделать этих окон и потом вызывать конкретное нужное, но как это сделать через функцию, чтобы для каждого ивента не было отдельного окна, которое будет засорять мне приложение, я не разобрался (возможно в силу неопытности, возможно из-за ограничений).
4. Оптимизация. Хотелось бы, чтобы после нажатия каждой кнопки приложение не висло на секунду, просто потому что. В игре особо сложных расчетов не будет, поэтому со стороны программиста особой нагрузки не будет.
Всякая там кроссплатформенность не особо важна. Хотелось бы язык, где нет гемора при создании структур, классов и можно нормально ими манипулировать, по крайней мере что-то не сильно далекое от С подобных языков. Поэтому всякие ассемблеры и прочую жуть точно не стоит предлагать.
Были мысли перейти на Java, т.к. похожа на шарп, подучить ее немного и взяться писать на ней. Но она вроде лагучая и лично для меня непонятно, насколько эта игра стоит свеч. Погружаться в язык, чтобы столкнуться с подводными камнями не особо хочется. Не очень желательно предлагать какие-то движки на JS и итоговой браузерной составляющей игры, поэтому предлагать можно, но как последние варианты для рассмотрения.
Как по мне мои требования к языку+движку не особо жесткие, какое-то решение точно есть.
P.S. скорее всего много опечаток, но мне как-то насрать.
Unity?
Для такого уж лучше годот
Есть движок RenPy на питоне. На нем хуева туча визуальных новелл сделана.
Если тебе надо просто визновеллу -- то RenPy, как выше сказали, а так, для всего этого отличненько подойдёт Java+Swing/FX. ФХ я не много пользовался, но вот Свинг не лагает, даже если его угромоздить картинками по самое нимагу. Ну и генерация окон и всякого разного тоже на месте.
Собственно, для этого всего и движ то не нужен. Если не планируешь анимаций пихать.
Нет, анимки не нужны. Какие подводные у Свинга?
Императивный подход. Каждый чих надо будет настраивать самому (хотя для меня это плюс), если ты не стерпишь -- есть билдеры для окон, хотя и динамичные окна надо будет писать самому. А ещё -- у него Set-in-stone дизайн, который меняется с помощью вуду-магии, но с помощью AWT можно превратить в кнопку хоть текстовый компонент, влепив на него слушатель нажатий (который, кстати,, до сих пор даёт пососать веб шнягам для Скрипта)
Хочешь увидеть предел свинга -- нагугли книгу "Filthy Rich Clients". Челюсть отвалится.
ну и не подводный камень, а даже плюс -- кроссплатформенность.
Если заинтересовало:
https://www.javatpoint.com/java-swing (тут же есть ФХ, если "хипстерности" не хватит)
Хочешь увидеть предел свинга -- нагугли книгу "Filthy Rich Clients". Челюсть отвалится.
ну и не подводный камень, а даже плюс -- кроссплатформенность.
Если заинтересовало:
https://www.javatpoint.com/java-swing (тут же есть ФХ, если "хипстерности" не хватит)
Я думаю, что для его цели это чудовищный оверкилл, потребующий серьезного изучения и кучу времени.
Он лёгок в изучении и освоении. Но к тому же могуч. При грамотном подходе, за неделю можно познать то требуемого состояния. Не
Думаю, что это "куча времени".
Про WPF даже не думай, оно уже давно мертво.
AWT наше всё
WPF? Пфф..Только WinForms, только олдскул!
в qt можно всё, что ты хочешь.
* для виджетов можно загружать css подобную шнягу, меняя шрифт/цвет/размеры, да ещё и прямо на лету.
* на qml можно делать всякую мигающе-пердящую шнягу тёмноперламутрового цвета.
* qgraphicsscene отображает тысячи 2д объектов без тормозов даже на пентиум2.
* можно opengl виджеты, в которых прямо glBegin .... glEnd и прочее в repaint() вставлять.
но есть огромный минус - с++ ебанутый язык. пишу на нём где-то с 2003, инфа 100%.
в 4ой версии можно было заюзать qscriptengine и юзать qt объекты прямо из js, но это шило на мыло, кмк.
* для виджетов можно загружать css подобную шнягу, меняя шрифт/цвет/размеры, да ещё и прямо на лету.
* на qml можно делать всякую мигающе-пердящую шнягу тёмноперламутрового цвета.
* qgraphicsscene отображает тысячи 2д объектов без тормозов даже на пентиум2.
* можно opengl виджеты, в которых прямо glBegin .... glEnd и прочее в repaint() вставлять.
но есть огромный минус - с++ ебанутый язык. пишу на нём где-то с 2003, инфа 100%.
в 4ой версии можно было заюзать qscriptengine и юзать qt объекты прямо из js, но это шило на мыло, кмк.
У меня создаётся вопрос, а чего НЕЛЬЗЯ сделать на qt...
вот да. напихали туда знатно. недавно собирал кросс либы для винды. один лишь qtbase без тестов и examples собирается больше двух часов. правда у меня Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz, но тем не менее.
*перекрестился чашкой кофе*
>но есть огромный минус - с++
Но есть же всякие wrapper'ы как pyqt, разве нет? Или я что-то про них не знаю?
Но есть же всякие wrapper'ы как pyqt, разве нет? Или я что-то про них не знаю?
есть. но
1. автор спрашивал про С подобные языки;
2. если конкретно питон, то ебитесь сами со своей динамической типизацией.
1. автор спрашивал про С подобные языки;
2. если конкретно питон, то ебитесь сами со своей динамической типизацией.
Да я и сам не любитель питона, это просто как пример. Я писал про то, что эту проблему можно решить такими вот либами.
По пункту 3. Делается на любом ООП. Создаёшь базовый класс окна, определяешь метод инициализации/конфигурации в котором уже реализуется твоя логика настройки конкретного окна. Если нужны какие то особые окна - наследуешься от базового - и там уже меняешь
Ren'Py не подойдет, игра не новелка, просто текстовая.
"Сразу перейду к делу. У меня в мыслях было создать полутекстовую (текст + картинки/гифки) игрушку."
Берешь указанный тобой TWINE и делаешь. Экономия кучи времени и нервов. Познакомишься с такой вещью, как RAD. И заодно потренируешься проектировать внутриигровые сущности. Это гораздо проще делать на JS. Если упрешься в скорость/сложность, то добавляешь чистый JS. Если будет действительно выходить, что-то серьезное, то можешь переехать на более серьезные языки/фреймворки.
Берешь указанный тобой TWINE и делаешь. Экономия кучи времени и нервов. Познакомишься с такой вещью, как RAD. И заодно потренируешься проектировать внутриигровые сущности. Это гораздо проще делать на JS. Если упрешься в скорость/сложность, то добавляешь чистый JS. Если будет действительно выходить, что-то серьезное, то можешь переехать на более серьезные языки/фреймворки.
Удваиваю господина
1. В WPF в xaml можно сделать для черного фона: Grid Background="Black" или использовать стили Style(сложнее но возможностей на порядок больше)
2. Менять цвет можно установкой флага или меняя нужный цвет в коде.
3. Это сделать сложнее в WPF(полностью генерить xaml). Но есть DataTemplate, где можно переключать разные варианты окна, про картинки и текст - это элементарно.
4. Кэширование или асинхронная подгрузка решит это.
WPF для старта будет хорошим вариантом, если цель попробовать закодить, что-то(наверно быстрее будет с использованием спец движков). Жаба или темболее куте будет напорядок сложнее. Но даже в WPF надо немного разбираться или хорошо гуглить (понять MVVM), чтобы не получился дикий говнокод и когда выйдет MAUI можно было легко портировать.
2. Менять цвет можно установкой флага или меняя нужный цвет в коде.
3. Это сделать сложнее в WPF(полностью генерить xaml). Но есть DataTemplate, где можно переключать разные варианты окна, про картинки и текст - это элементарно.
4. Кэширование или асинхронная подгрузка решит это.
WPF для старта будет хорошим вариантом, если цель попробовать закодить, что-то(наверно быстрее будет с использованием спец движков). Жаба или темболее куте будет напорядок сложнее. Но даже в WPF надо немного разбираться или хорошо гуглить (понять MVVM), чтобы не получился дикий говнокод и когда выйдет MAUI можно было легко портировать.
html
Для создания игр наиболее популярен Unity. В нем можно на C#, там есть темная тема, много народа делает игры за 3 дня ( https://ldjam.com/games ), так что ничего сложного в нем нет. Но в целом по разбираться придется не мало.
Если главное сделать игру, а не программировать игру - то возможно стоит посмотреть на различные конструкторы игр. Вот например один из них: http://docs.textadventures.co.uk/quest/
Если главное сделать игру, а не программировать игру - то возможно стоит посмотреть на различные конструкторы игр. Вот например один из них: http://docs.textadventures.co.uk/quest/
Чтобы написать коммент, необходимо залогиниться