0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 5
|
|
1 | |
С чего начать написание игры23.07.2016, 03:57. Показов 2574. Ответов 41
Метки нет (Все метки)
Всем привет. Хотел бы начать изучать C++, конечно же не с нуля. На данный момент уже знаю скриптовый язык подобный C++. Немного увлекался C#, писал мелкие программки, потом забросил.
Так вот, сейчас бы хотел заняться "написанием небольшой игры" (со своим движком), предположим это будут гонки. Как вообще это происходит? Какие программы требуются? Прошу немного рассказать про это
0
|
23.07.2016, 03:57 | |
Ответы с готовыми решениями:
41
С чего стоит начать для создания игры? С чего начать создание компьютерной игры, где битвы происходят в теле человека? С чего начать 3д моделирование персонажей для игры, создаваемой с помощью Unreal Engine 4 С чего начать написание игры Домино |
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
24.07.2016, 19:43 | 21 |
EVP, попробую выразить свои мысли яснее: одно дело знать как все работает и в случаи необходимости применить свои знания, а совсем другое дело все самому с нуля писать.. это попросту глупо... с так же успехом можно бросить все и пойти в лес жить, и начать огонь-колесо-и т.д.... технологии постоянно развиваются, нужно использовать, то что уже придумали и по возможности улучшать это...
0
|
47 / 47 / 31
Регистрация: 02.04.2016
Сообщений: 312
|
||||||
24.07.2016, 19:54 | 22 | |||||
работает, да и не вижу причин не работать.
да, тут я не угадал - давно не связывался с кодом, не LPWOID требует явного приведения а LPCWSTR. вот в таком виде код(взятый из диска прилагаемого с книгой) Кликните здесь для просмотра всего текста
ловит ошибки но стоит добавить (LPCWSTR) в строки 92, 101, 102 - и код работает
1
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||
24.07.2016, 20:02 | 23 | ||||||||||
ну потому что не поддерживается.
а майкрософт не гарантирует никакой обратной совместимости для решений, которые она снимает с поддержки. я сам по итогу чтания Ламота оказался счастливым обладателем собственного 2д движка на директдрав7. ну вот он у меня так и не взлетел ни на чем кроме xp. ну может я просто сам чего то накосарезил. у винды есть в настройках проекта галочки: мультибайт, или юникод. ну вот, в современных виндах - юникод во все поля. можно ничего не кастить, можно переключится на мультибайт (не оч хорошая идея). а лучше просто идти в ногу со временем, и везде использовать юникод. то бишь, вместо такого:
0
|
47 / 47 / 31
Регистрация: 02.04.2016
Сообщений: 312
|
|
24.07.2016, 20:50 | 24 |
у меня на семерке идет, и уже скомпилированные примеры игр, которые на диске, тоже работают
Добавлено через 1 минуту единственно что не работает - это код с 24х битной графикой Добавлено через 29 минут тема называется "с чего начать...", глупо было бы начинать не с азов, а с изучения документации супернавороченого 3D движка с кучей разных средств которые опытной команде игроделов не всегда требуются, а уж новичку, который только собрался это изучать и подавно
1
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|
24.07.2016, 21:04 | 26 |
Да, это необходимо уметь делать.
ТС не знает как всё работает, он пытается изучить это. Изучать предметную область можно на чужих ошибках (чужой игровой движок) или на своих (свой игровой движок). Повторюсь: Чтобы улучшать что-то, это что-то надо изучить. А изучать можно на чужих ошибках или на своих... Иногда надо наделать своих ошибок, чтобы начать изучать чужие ошибки. Иногда надо увидеть кучу чужих ошибок, чтобы начать делать свои. Всегда есть выбор! Успехов!
1
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
24.07.2016, 22:51 | 28 |
согласен, но не писать же все с нуля... приведу пример: вы начинаете знакомство с контейнерами STL, узнаете что такое вектор... вы ж не лезете в код реализации сразу, не узнаете первым делом как он реализован и как перераспределяется в памяти, не узнаете как классы итератора и вектора взаимодействуют.. нет, нет и еще раз нет... сначала в начинает с простого - push_back, pop_back и так далее по нарастающей... из этого следует вывод: для того чтоб пользоваться технологией, не обязательно знать всю подноготную (реализацию)... азы знать нужно (хорошему программисту), но совсем не обязательно с них начинать, а тем более если это касается создания своего движка...
0
|
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 5
|
|
25.07.2016, 00:30 [ТС] | 29 |
Честно скажу, когда я только начал изучать программирование, а язык был Pawn, мне тоже все говорили "скачивай с инета чужие скрипты и смотри их", но это было до такой степени скучно...
В итоге как все получилось: гуглил или спрашивал на форуме как и что сделать изучал что находил применял это как мне надо На сегодня знаю этот язык 90% точно. И да, если что я за год написал примерно 35к строк кода в одиночку Не думаю что мне надоест делать движок, тем более я же не хочу какую то супер физику. Еще хотел спросить, чем DirectX отличается от OpenGL? Или это как то можно связать?
0
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|
25.07.2016, 17:31 | 31 |
Сравнение OpenGL и Direct3D.
OpenGl vs DirectX episode II. Добавлю: DirectX - только для Windows, печалька. OpenGL (OpenGL ES 2.0+, WebGL) - доступен на различных платформах (WEB, Linux, Мобильные системы), красота. Можно глянуть, как это сделано в Ogre3d.
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
25.07.2016, 18:35 | 32 |
Начать нужно с инфраструктуры движка. т.е. нормальных массивов объектов рассчитанных на хранение указателей на объекты, очень здорово если со слежением за жизненным циклом хранимого объекта, потом очень стоит на этих массивах собрать шаблон дерева. Дальше стоит выбрать программу 3D моделирования и сделать экспортер из нее в свой формат. Очень желательно при этом сделать систему полиморфной подгрузки объектов, бо как если программа 3D моделирования позволяет не только треугольнички моделировать, но и давать данные для модели коллизий неполиморфной подгрузки не хватит, да и вообще полиморфная много где пригодится, посему очень неплохо так или иначе поиметь RTTI. Еще неплохо бы иметь мультисписки. т.е система такая - контейнер имеет кроме списка владения списки обработки по типам. при переключении у объекта какого либо свойства он автоматически заносится/убирается в тот или иной список обработки. Могут понадобится и подобные мультидеревья. После того как будет трасса редактор-движек можно подумать об отрисовке и физ.модели. для отрисовки очень удобно сделать свою систему API (обычно базовый класс или интерфейс) под который потом делается потомок-обертка для любого API (Например для любой версии DX или GL). НУ а дальше все просто. Последовательно по одному из списков запускается расчет перемещения, потом по другому расчет отрисовки. (может и другая обработка запускатся, у меня например 5 списков только в физ модели - расчет работы двигателей и прочих внутренних процессов, расчет скорости, рассчет поворота и перемещения, объекты могущие вызвать коллизию, объекты с которыми можно столкнуться).
Добавлено через 25 минут Если хотите заниматься разработкой игрового движка забудьте про STL напрочь. Если не можешь сам реализовать нормальный аналог std:vector со слежением за жизненным циклом содержимого, то о разработке игровых движков и думать нечего. Опять же вся эта stl муть для реал-тайм приложений абсолютно неприменима и ненадежна, мало того не имеет в своем составе вообще ничего нужного (например двунаправленных указателей даже в ограниченном контейнер-содержимое виде), так же как и для около-реал-тайм, коими являются игры (около исключительно потому что на не реалтайм оси можно добится только околореалтайма но никак не реалтайма), посему контейнеры и тп. придется делать самостоятельно.
0
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
25.07.2016, 18:44 | 33 |
я не собираюсь разрабатывать свой собственный движок... перечитайте тему заново, вдумчиво и внимательно...
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
25.07.2016, 18:51 | 34 |
_KROSCH, Намечается проект именно на Pawno, есть парочка интересных концепций и народ который готов вложится в сервак, если интересно поучаствовать отпишись в личку.
Добавлено через 2 минуты Начнем с того что топик-стартер собирается:
0
|
47 / 47 / 31
Регистрация: 02.04.2016
Сообщений: 312
|
|
25.07.2016, 18:52 | 35 |
до сих пор не знаю STL, да и для чего? да, там много чего удобного, но мне не влом написать лишние 10-20 строк кода, и знать что и как у меня работает, и где требуется оптимизация
0
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
25.07.2016, 18:58 | 36 |
Fulcrum_013, еще раз, я нигде в этой теме не писал, что собираюсь написать свой собственный движок... более того, учитывая, что:
я сказал, что начинать писать свой собственный движок - глупая затея... можно использовать какой-нибудь простенький и написать таки свою игру... Так причем тут это???? : Stitch Igorek, я понимаю вашу позицию) моя - нужно пользоваться новыми технологиями, но при этом знать как они работают
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
25.07.2016, 19:16 | 37 |
Ну это зависит от того сколько раз надо написать эти строчки кода. Потому STL и малопригодна для реальных задач, только для гоняния говноданных из вектора в вектор. Ничего нужного для серьезной инфраструктуры. При этом к примеру то что мне для инфраструктуры нужно (списки указателей на объекты со слежением за жизненным циклом, мультисписки, деревья, мультидеревья) уместилось примерно в 1000 строк кода. при этом основной код сократился раз в 10, по сравнению с тем если реализовывать все это на std::vector<shared_ptr<Type> >
Добавлено через 2 минуты Никакой готовый движек не решает основную проблему - трассу редактор моделей-движок. При своем движке хотя бы можешь в этом вопросе маневрировать как угодно. Как уже говоил - залог успешного движкостроительства - инфраструктура движка, которая начинается с банального контейнера типа динамического массива. Добавлено через 4 минуты Это кстати больше зависит от знаний в других областях нежели от знания С++. Даже скажу так - в нормальных ликбезах C++ учат один семестр. Тех кто не способен за семестр освоить отчисляют к глиняной маме. Потому как все остальные 5 лет учат очень разные разделы математики и как ее при помощи того же С++ прикладывать к компу. т.е. при наличии знаний из области архитектуры движка, вычислительной геометрии, численных методов, матана, некоторых разделов физики, незнание на данном этапе С++ особой проблемы у человека не составит, потому как освоение С++ за 4 месяца с нуля - норма высшего образования. Добавлено через 7 минут Ну скажем так - если занимаешься геймдевом нужно эти новые технологии разрабатывать самому, а значит не просто знать что у них под капотом, но то чего у них под капотом нет (касается преимущественно библиотек общего назначения типа STL) и как его под этот капот добавить. А на мусорниках кода гитхаба нету и не может быть ничего (ни концепций ни кода) моложе 15 лет, так же как и во фришных движках, особенно простеньких.
0
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
25.07.2016, 19:18 | 38 |
Fulcrum_013, вот только не нужно универ приплетать, это будет холивар... у меня у самого вышка по прикладной математике и скажу вам так: меня там не научили ничему такому, чего б я не освоил сам... только вот в университет кроме действительно полезных предметов, которые я буду применять после завершения, еще куча (огромная) бесполезных, что приводит нас к выводу, что университет - излишняя, расточительная трата времени...
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
25.07.2016, 19:25 | 39 |
То что касается именно специальности - ей нельзя научить, можно только научится самому, соответсвенно задача ликбеза просто дать такую трассу чтобы незнание чего-то одного не тормозило изучение чего то другого. Ну и помочь пройти эту трассу, подстраховать так сказать при прохождении, проконсультировать. Да и есть еще один такой момент - обсуждения того или иного аспекта в курилке с сокурсниками дали куда больше понимания чем лекции или консультации у преподов. Ну а универ он на то и универ - там по определению универа не менее 30% гуманитарки которая к специальности не относится. А что кроме гуманитарки - так хороший программист это в первую очередь хороший математик, который не столько кодер сколько архитектор и постановщик задачи. При этом обычно и как кодер на порядок выше просто кодера. У нас это еще не особо проявляется, а на западе разницу между программистом и кодером четко знают. И ценят. разница в з/п программиста и кодера может достигать и 10 раз.
1
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
25.07.2016, 19:30 | 40 |
эх... я лично до сих пор не могу избавиться от "послевкусия" после универа и считаю, что мог эти 5 лет провести более плодотворно где-нибудь в другом месте...
0
|
25.07.2016, 19:30 | |
25.07.2016, 19:30 | |
Помогаю со студенческими работами здесь
40
С чего начать написание игры под Android? С чего начать написание стратегической игры и какие технологии использовать? С чего начать написание игры "Викторина"? Написание игр. С чего начать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |