Угадываю функции...
2 / 2 / 0
Регистрация: 18.11.2019
Сообщений: 77
|
|
1 | |
Какой движок лучше выбрать18.06.2020, 08:23. Просмотров 3450. Ответов 53
Метки нет Все метки)
(
Здравствуйте. Имеется древний ноут с windows 7. Юнити на нём лагает (да и учить шарп как то не хочется), Unreal Engine тоже. Посоветуете какой-нибудь современный малотребовательный игровой движок для C++? А то кодить на билдере 2009 года мне уже как-то стыдно
![]()
0
|
|
18.06.2020, 08:23 | |
Какой движок лучше Какой движок выбрать 2d?
Подскажите, какой игровой движок выбрать |
|
27.06.2020, 19:16 | 41 |
Это смотря какие игры, какие цели у программиста. Если у вас не маленький город, то наверняка вы найдёт вакансии, где игровая контора ищет программистов. К вам будут требования только как к программисту. Если контора делает многопользовательские игры, то в команде могут быть программисты с разными специализациями. Один может на геймплее специализироваться, другой на сети и базе данных, четвёртый на написании шейдеров. Либо один программист может это сочетать. Знания и навыки использования API движка как Unity могут быть достаточными для работы в команде. Я хочу писать сетевые игры, но я могу использовать временные бесплатные картинки и временные музыкальные файлы. Сейчас интернет завален бесплатными картинками для игр, 3D моделями, музыкой и звуками. Программист легко может в любой момент заменить звуки, музыку, картинки и 3D модели. Если есть у программиста хобби: писать музыку, моделировать, рисовать, создавать спайтовые анимации или создавать скелетные анимации, то пусть этим занимается, если ему нравится. А можно, действительно, найти друзей среди художников, моделлеров, аниматоров, композиторов и вместе делать игры, пусть ради хобби сначала. Вариантов огромное количество. Кому-то нравится в офисе работать в команде, делать мобильные игры. За зарплату можно найти вакансию программиста на Unity в любом более или менее крупном городе. Можно удалённо найти. При знании английском можно найти зарубежом удалённую работу - вакансий полно. Либо искать заказы, как фрилансер и специалист в движке. Можно свои небольшие игры делать, встраивать в них рекламу, брать бесплатную графику и звуки, либо потом заказывать, если будут накопления и специфические потребности в музыке или арте.
Для моего ноута это очень много. Сейчас только самое необходимое есть на ноуте. Я периодически курсы отгружаю на облачные хранилища: Mediafire, Google Drive, One Drive, Yandex Disk и т.д. В основном жёсткий забит курсами на английском по разным тематикам для самообразования в работе. Я удалил Visual Studio 2019, потому что она занимала больше 10 ГБайт. Вместо неё использую легковесный редактор кода VSCode. Использую VSCode для C#/Unity, Python, TypeScript/JavaScript/HTML/CSS. Для C++ использую QtCreator. Я пробовал Unreal в 2015 году. Не помню, какая тогда была версию. У меня доходило то того, что ноут перезагружался от перегрева. Он не мог спокойно работать - сильно шумел. Unity работает тихо. Такая же ситуация была с 3DsMax, Maya и Photoshop, поэтому я перешёл на изучение Blender, GIMP и Inkscape. Вместо Unreal пробовал CryEngine 5 - ситуация такая же. Просто нужно накопить на мощный ноут. Я именно ноут хочу, чтобы быть перемещаться с ним. WebAssembly в целом сыроват ещё. Я читал, что на мобильных плохо работает. Команда разработчиков Unity вообще решила поддерживать только WebGL на desktop-браузеров, а от мобильных пока отказалась. Для браузерных игр на WebGL я выбрал Phaser (для 2D) и Babylon.js (3D), потому что эти они поддерживают TypeScript, который я стараюсь использовать вместо JavaScript, потому что мне не нравится программировать на JS. Я собрал недавно пример для desktop-браузеров на Unity WebGL в котором можно крутить кубик: https://bit.ly/2B6wqWo Весит целых 5 МБайт. Зато запускается в один клик, не нужно качать архив, разархивировать. Поворачивается кубик с помощью клавиш стрелок на клавиатуре:
0
|
28.06.2020, 11:19 | 42 |
Есть такая шутка, что C# - это следующее поколение C++, то есть ещё два плюса добавили. В этой шутке есть доля правды.
Я когда стал изучать C#, у меня такое ощущение и было, что C# - это усовершенствованный C++. Столько очень удобных штук добавилось к C++. Изучайте одновременно C++ и C# через написание простых игр. Научитесь писать простые - будут открываться пути к более сложным. Учиться определённо нужно на простых известных играх. Почитайте эти короткие статьи, особенно, статью "Make small Games": https://noobtuts.com/articles Руки нужно набивать на простых игра. Это я и к себе тоже обращаюсь, потому что я сам часто это забывал и сейчас забываю. День проходит, а вклад в конкретную игру не был сделал. Надо писать 2D-игры на SFML С++ и 2D/3D игры на Unity C#. По SFML я уже давал ссылку, какие игры можно взять за стартовые. А это ссылка на текстовые туториалы на простом английском, как делать известные игры с простой графикой на Unity: https://noobtuts.com/unity Нужно повторять эти туториалы до полного запоминания и фантазировать - добавлять и изменять по-своему.
0
|
28.06.2020, 12:03 | 43 | |||||
Я кода учился в универе (2004 - 2009), то для курсовых и учебных задач делал GUI-приложения на C++Builder 6 (2006). У меня ещё лежит с тех времён эта толстая книга в бумажном виде: Программирование в C++Builder 6 и 2006. У вас уже есть установленный Qt для GUI. Так что будем считать, что это вопрос решён. Изучайте Qt, через создание простых GUI-приложений и простых игр. Очень рекомендую эту небольшую онлайн книгу http://zetcode.com/gui/qt5/ В конце описываются и демонстрируется код двух игр: Snake и Breakout. Эти игры - это классический "hello, world" в мире разработки игр, так что их обязательно нужно уметь написать.
Теперь к вопросу выбора движка. Изучайте одновременно Unity и SFML. Unity вам даст умение программировать на самом высоком уровне абстракции, а SFML - немного другой подход, что нужно всё кодом, что тоже интересно и полезно. Одновременно будете изучать программирование 2D игр на С++ и 2D/3D игр на Unity. Для 2D на C++ у вас есть SFML, но я считаю, что нужно ещё изучать графический движок на C++. Я советую взять графический движок Qt3D, который встроен в Qt. За одно будете практиковаться c Qt и делать приложения с 3D графикой и с GUI на Qt. Этот графический движок можно использовать для 3D игр. Qt3D является обёрткой над OpenGL. При этом не нужно писать шейдеры и устанавливать Assimp. В Qt3D встроен Assimp. Уже многое в Qt3D реализовано, в том числе скелетная анимация, которую я ещё не пробовал. Например, реализованы контролеры для работы с камерой. К примеру, QOrbitCameraController, который поворачивает камеру вокруг объекта и QFirstPersonCameraController, который перемещает камеру, как в 3D шутерах. Можно добавить Bullet, чтобы хотя бы детектировать прикосновение объектов. По-моему, в Bullet ещё Raycast должен быть, то есть выбор объектов по клику мыши. Небольшим числом строк кода я загрузил кубик, который раскрасил в бесплатном 3D редакторе Blender. Поместил на сцену камеру и точечный источник света. Добавил управление камерой QOrbitCameraController. Как вариант, можно сделать 3D змейку, создав свои простые 3D объекты в Blender или найти их в интернете. Позже попробую загрузить объекты из Blender для которых применю физику на Bullet - падающий кубик на угол другого кубика для начала. Чем больше разнообразных практических упражнений, тем лучше.
main.cpp
Код
QT += 3dcore 3drender 3dlogic 3dextras INCLUDEPATH += "E:\Libs\Bullet3-2.89\include" LIBS += -L"E:\Libs\Bullet3-2.89\lib" LIBS += -lBulletDynamics -lBulletCollision -lLinearMath SOURCES += \ main.cpp RESOURCES += \ Models.qrc
0
|
alecss131
|
28.06.2020, 12:51
#44
|
Не по теме: угу угу, особенно компиляция в байткод и использование JIT и майки долго не хотели делать язык кросплатформенным использование JIT компиляции превратило язык в по сути тоже самое что и java, только вместо jvm тут свое, а то что сборка в ехе ни о чем не говорит (так как это не ехе а аналог jar) и появилась проблема легкого получения исходников из программы, причем еще проще чем в java (я изначально думал это особенности юнити, но как оказалось весь язык такой, проще потому что полученный код куда ближе к оригиналу чем декомпилированный java) имхо нету ничего лучше компиляции в нативный код почитайте вот отзывы начиная с Java - это недоразвитый си шарп? (два примера почему это так) имхо переход к байткоду это шаг назад, не буду разводить холивары
0
|
28.06.2020, 13:34 | 45 |
Я имел ввиду только с точки зрения удобство написания кода. Да, много синтаксического сахара, но эти мелочи так приятны. Есть и не очень мелкие вещи, как ключевое слово interface. Передача в функции с ключевыми словами out/ref мне нравится. Встроенные getter/setter в виде свойств. Но в тоже время если смотреть на Qt, то там тоже много улучшений для программирования, поэтому Qt C++ примерно сравнялся с C# по удобству.
А сборка уже не в EXE можно делать. Они же активно развивают .NET Core. Один раз собираешь на одной платформе приложение, как по типу jar, а потом без перекомпиляции запускаешь на любом ПК. Правда, пока только консольные приложения, ну и OpenTK перенесли на .NET Core. Только для запуска нужно, чтобы пользователь один раз поставил .NET Core Run, как по типу Java. GUI-приложения на .NET Core можно будет делать От C# никуда не денешься. Во всех городах РФ можно найти работу программиста игр в основном только на Unity. Ожидается, что рынок мобильных игр ещё больше будет расти в ближайшие годы. Unity изучают даже в некоторых универах страны и наверное, даже в школах. Примерно 5 раз я делал небольшие фриланс на Unity для студентов. Оно и понятно, многим интересно изучать программирование в графической форме, можно придумывать много интересных упражнений. Unity и Godot внесли огромный вклад в популярность языка C#. Я изучал когда-то Java по книге "Философия Java", которая у меня есть в бумажном виде. Мне по синтаксису C# больше нравился, тем более что самый популярный движок - это Unity. Мне C# сейчас нужен только для Uniyt. Для GUI приложений лучше всего использовать Qt C++, потому что компиляция в нативный машинный кода, без виртуальных машин, а значит получаем супер скорость и супер удобства на счёт фреймворка Qt. Плюс у меня в бОльшем приоритете веб, потому что запускается в один клик, без установки RunTime, без скачиваний, пользователь один раз кликнул и запустил. Добавлено через 6 минут По поводу того, что будет выпущен новый GUI фреймворк на базе .NET Core. Из группы вконтакте Metanit'а скопировал если кому-то будет интересно, но я ещё раз призываю использовать Qt C++.
0
|
28.06.2020, 13:56 | 46 | |||||
MiKITA17, настоятельно вам рекомендую начать изучать JavaScript с переходом на язык TypeScript. Вы сможете страивать свои игры в социальные сети, такие как: вконтакте, facebook и т.д. Сможете взаимодействовать с API этих социальных сетей. На JavaScript/TypeScript самый простой способ сделать реальный мультиплеер вебсокетах и Node.js без денежных затрат, потому что есть такие бесплатные хостинги, как Heroku, OpenShift и т.д. На этих хостингах есть бесплатные базы данных: SQLite, MySQL, MongoDB, PostgreSQL и т.д. Вы сможете одновременно практиковаться в программировании клиент-серверных приложений, в использовании SQL, взаимодействии с API социальных сетей. Самый популярный бесплатный фреймворк для 2D-игр - это Phaser. Этот фреймворк позиционирует себя, как mobile-first, то есть оптимизирован для работы с мобильными устройствами. В целом, вы можете практиковаться в программировании, через игры и особой нет разницы какой язык, потому что многие принципы программирования остаются теми же самыми и могут быть перенесены с языка на язык и с движка на движок. Phaser - это игровой фреймворк, который заточен на программирование кодом, как SFML или MonoGame. Phaser является обёрткой над WebGL, то есть графика рисуется с помощью шейдеров, которые загружаются в память видеокарты. При желании можно самому писать шейдеры для Phaser.
Приведу пример анимации. Запустите пример в браузере. Смотрите, как мало кода надо: index.html
1
|
Угадываю функции...
2 / 2 / 0
Регистрация: 18.11.2019
Сообщений: 77
|
|
28.06.2020, 19:00 [ТС] | 47 |
Спасибо, но дайте хотя бы в sfml и Qt освоиться, а то хвататься и изучать всё и сразу времени не хватит
![]() Добавлено через 2 часа 36 минут И да, раз уж столкнулся с такой проблемой напишу сюда же. Как сделать так, чтобы не нужно было таскать за эксешником кучу dll-ок. Мало того что как по мне это не очень красиво, да ещё я не могу найти нужных dll-ок. Вылезает сообщение "this application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem." и попробуй пойми что ему нужно. Пробовал кидать dll-ки из папки plugins в Qt\Tools\QtCreator\bin которая, но это не помогло. В интернете отрыл тему на этом же форуме (Ошибка This application failed to start because no Qt platform plugin could be initialized) но в ней отсылают на сайт документации Qt, где я опять же не нашёл ничего кроме папки plugins. Какие всё таки нужны dll-ки?
0
|
28.06.2020, 20:35 | 48 |
Я писал пошаговую инструкцию аж в 2014 году, ещё не пробовал актуальна ли она для Qt 5.15.0: Статическая сборка Qt 5.4 (MinGW) для Win7. Сжатие exe до мин. размера с помощью upx. Попробуйте и напишите здесь в своей теме получилось ли или какие ошибки выскакивают. Я не могу попробовать. У меня на жёстком катастрофически не хватает свободного места. Ели-ели удалось освободить на двух локальных по 4 ГБайта. После сжатия с помощью UPX сожмётся EXE до 5 МБайт.
Это ошибку легко исправить. Нужно скопировать папку "platforms" к EXE из этой папки: C:\Qt\5.15.0\mingw81_32\plugins Надо запускать EXE и смотреть, что требует. Эти три не забудьте:
Добавлено через 54 минуты Я Virtual Box не ставил. Постепенно можно вычислить какие dll нужны. Надо выкладывать свои игрушки на форуме, просить знакомых, чтобы они запустили. После нескольких приложений или игрушек вы будете знать, какие требуются для релиза. Библиотеки нужно брать из этой папки: C:\Qt\5.15.0\mingw81_32\bin Правила такие, что у Qt три лицензии:
Если вы собираете в статику, то вы можете использовать GPL и предоставлять исходники. Добавлено через 16 минут MiKITA17, я считаю, что пока не стоит тратить время на сборку Qt в статику из исходников. Не так уж и много библиотек нужно будет добавить и весить приложение будет по современным меркам не очень много. Пользователь без труда отыщет exe-файл.
0
|
Модератор
1425 / 425 / 140
Регистрация: 11.08.2017
Сообщений: 1,445
|
|
28.06.2020, 21:12 | 49 |
и на ваш ехе будет ругаться почти каждый антивирус а сайт вирустотал выдавать кучу срабатываний
причем так будут вести даже на программе типа hello world это уже проходил знаю ехе в сотню мегабайт даже имхо лучше небольшого ехе но с кучей фалов в нагрузку много файлов оправданно если крупный проект, но тогда уже нужен и инсталятор хотя вон в маке приложение представляет из себя папку где в конце имени .app и такая папка является исполняемой, а внутри куча всего, программы крайне редко требуют установки (почти не встречал), распространяются в виде образа диска формата dmg который монтируется двойным кликом и имеет интерфейс (при это программу сжимает)
0
|
28.06.2020, 22:03 | 50 |
Чтобы избавиться от кучи файлов, которые требует SFML, и собрать в один EXE, автору темы придётся собирать SFML из исходников в статику. Я думаю, что это будет пустая трата времени. Подумаешь, 3-4 лишние DLL. Сейчас ему лучше тратить время каждый день на написание простых игр на SFML, читать книги по SFML, изучать чужие исходники игр, делать свои на основе чужих.
MiKITA17, если вы пишите GUI приложение на Qt, то вам нужно будет добавить из Qt всего три библиотеки: Qt5Core.dll, Qt5Gui.dll и Qt5Widgets.dll. А так же создать папку "platforms" рядом с EXE, куда положить библиотеку qwindows.dll из папки: C:\Qt\5.15.0\mingw81_32\plugins\platforms У меня новое достижение, в плане создания GUI для игр. До меня дошло, как одновременно можно изучать создание GUI на Qt C++ и тренироваться в программировании игр на SFML. Можно сделать GUI для изучения Box2D. Для учебных игр не нужно красивое GUI. Можно делать классическое GUI, которое идёт с Qt, а SFML нужно встроить внутрь окна Qt. Мы получаем всё богатство GUI и SFML графику в одном окне. Видео инструкция, которую я проверил, она работает: How to create an SFML Widget in Qt Creator Видео
0
|
28.06.2020, 22:04 | 51 |
Это инструкция с официального сайта SFML, где расписано, по-моему, тоже самое, чем происходит в видео сообщением выше: Integrating to a Qt interface
0
|
28.06.2020, 22:20 | 52 |
Здесь на скринште я показал, каких библиотек должно быть достаточно, а может быть какие-то лишние - у меня нет чистой операционки, чтобы проверить. По-моему, ничего страшного в этом списке нет, exe можно легко найти в нём. Хотя я предпочитаю больше веб-приложения для запуска которых нужен только один клик по ссылке. Вообще если требования позволяют запускать приложение в браузере, то лучше делать web-приложение, а не не позволяют, то в виде standalone-приложения.
Может библиотеку openal32.dll я зря включил, но она идёт вместе с SFML. На всякий случай, я её буду добавлять к своим поделкам. Кстати, выкладывание своих даже таких простых творений в виде релиз очень мотивирует. Выкладывание кода даже так не мотивирует, потому что код - это не исполняемое приложение, а EXE - это уже достижение и оформленный результат, который может запустить любой человек, даже далёкий от программирования и IT. Сборка в релиз для Windows: QSfmlWidgetDialog_Win86.rar (10.00 Мб)
0
|
Угадываю функции...
2 / 2 / 0
Регистрация: 18.11.2019
Сообщений: 77
|
|
29.06.2020, 08:54 [ТС] | 53 |
Ааааа сложнаа. По крайней мере для меня, новичка в Qt и sfml понять что происходит в видео или в инструкции очень сложно.
0
|
29.06.2020, 10:47 | 54 | ||||||||||||||||||||
Такие моменты надо ценить. Значит будет рост, если сделать усилие и проделать работу. Если честно, я сам мало что понял, когда смотрел в первый раз, но выполнил, просматривая второй раз, ставя видео на паузу. Третий раз будет легче выполнять. Буду повторять, пока не запомню на всё жизнь. Попутно буду почитывать документацию и официальную инструкцию с сайта SFML. Мне нужно GUI, чтобы сделать переключение языков (русский/английский) в своих играх на SFML, а так же добавить меню и диалоговое окно для подключения к удалённому сервере с помощью вебсокетов. Сделаю крестики-нолики с сервером на Node.js с хостингом на Heroku (Getting Started on Heroku with Node.js), а клиент будет на Qt SFML. В Qt встроена поддержка вебсокетов. Мне интересно программировать именно сетевые игры.
Определённые достижения в направлении вебсокетов у меня есть. Я выполнил практическую часть инструкции: WebSockets Crash Course Видео
Я перемотал теорию - потом над ней подумаю, и написал только практику, этот код где ставлю точку останова, чтобы как в видео засечь момент, когда подключается клиент: server.js
main.cpp
0
|
29.06.2020, 10:47 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Какой мультиплеер лучше выбрать? Как лучше залить текстуру в массив? Какой формат текстуры лучше использовать? 3D движок вручную, какие инструменты выбрать? Выбрать движок? [Unity3D, XNA, OGRE, Wave, Delta, Axiom, Mono.] Какой игровой движок будет быстро работать на такой конфигурации компьютера? Какой движок лучше выбрать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |