Суббота, 23 Ноября 2024, 16:40

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Подскажите книги\материалы по игрострою
puksusДата: Суббота, 28 Октября 2017, 17:59 | Сообщение # 1
Пчёлка Зоя
Сейчас нет на сайте
Хочу привести движок своей игрухи в порядок (а если честнее, снести всё и переписать). Во-первых, мне подсказали вот эту очуменную книгу по паттернам, читаю с удовольствием, очень интересно, всем рекомендую, смотрю на собственный код уже со стороны, довольно забавно.
ссылька

Кроме того, хочу реализовать многопоточность в игре и поддержку скриптового языка (скорее всего lua)
Может кто подсказать книжек по игровой многопоточности? Крайне желательно чтобы книга (или может, цикл статей?) пробегалась по основным моментам, не слишком углубляясь в детали и была ориентирована именно на создание игр. Потому что читать двухтысячестраничную жирную книженцию, описывающую все тонкости работы винды заунывным языком, нет времени (и желания тоже)

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

Ну и ещё бы что-нибудь по алгоритмизации. Что лучше, читать Кормена или emaxx? Может, есть ещё какие ресурсы, где годно всё разъясняется?

Ну и по сетям что-нибудь желательно. Игра-то моя не будет поддерживать мультиплеер, но основные моменты в разработке сетевых игр, я считаю, нужно знать, ибо может в любой момент припереть.

PS. Тех литературу на английском читаю почти свободно, так что можно предлагать и чтиво на оном языке.
PPS. Я понимаю, что нагуглить можно что угодно, но может, кто-то уже гуглил эти дела до меня и отсеял то, что похуже, и может поделиться ценными знаниями в оном достопримечательном вопросе :)
PPPS. Пишу на с++, поэтому крайне желательно найти книги, завязанные именно на этот язык.


https://vk.com/beezoya
AlexRabbitДата: Воскресенье, 29 Октября 2017, 00:18 | Сообщение # 2
старожил
Сейчас нет на сайте
Цитата puksus ()
Ну и ещё бы что-нибудь по алгоритмизации. Что лучше, читать Кормена или emaxx? Может, есть ещё какие ресурсы, где годно всё разъясняется?


1) Кормен "Алгоритмы. Построение и анализ"

2) Кнут "Искусство программирования" + Вирт "Алгоритмы и структуры данных"

Я ленивый, поэтому часто смотрю тут как уже сделано тут http://www.cs.princeton.edu/~rs/AlgsDS07/ , http://algolist.ru/


Сообщение отредактировал AlexRabbit - Воскресенье, 29 Октября 2017, 02:41
drcrackДата: Воскресенье, 29 Октября 2017, 05:28 | Сообщение # 3
старожил
Сейчас нет на сайте
Тут вчера хорошая статья на хабре вышла: https://habrahabr.ru/post/341080/
Просто почитай, чтобы понять, насколько сложны современные движки, и может передумаешь свой велосипед писать с нуля
puksusДата: Воскресенье, 29 Октября 2017, 11:37 | Сообщение # 4
Пчёлка Зоя
Сейчас нет на сайте
AlexRabbit, drcrack, спасибо за интересные ссылки)

https://vk.com/beezoya

Сообщение отредактировал puksus - Воскресенье, 29 Октября 2017, 11:38
ByurrerДата: Воскресенье, 29 Октября 2017, 23:52 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Как на счет стандарта оформления кода?
К примеру вот https://habrahabr.ru/post/172091/


Мой блог - ссылка
Мои проекты:
SkyXEngine - графический 3D движок с real-time рендером
s4g - скриптовый язык программирования


Сообщение отредактировал Byurrer - Воскресенье, 29 Октября 2017, 23:52
puksusДата: Понедельник, 30 Октября 2017, 01:24 | Сообщение # 6
Пчёлка Зоя
Сейчас нет на сайте
Ну, не знаю, правила разные бывают. Вот такого кода я не видел вообще никогда. Чёт как-то стрёмно выглядит подчёркивание в конце мембера.


Венгерская нотация, например, орёт делать мемберы через m_ ,и я долгое время называл мемберы примерно так "int mVariable", но сколько ни пишу, в 50% случаев всё равно забываю поставить эту буквочку m, в итоге пишу код, спохватываюсь, что оной буквы нет и лезу исправлять. Кроме того, таким макаром очень неудобно вечно зажимать кнопку shift для первой буквы названия члена после m. Так шо теперь подумываю начать ставить подчёркивание после m и начинать с мелкой буквы. Так же оная нотация орёт называть классы, начиная с пуквы C. И я долго действительно так их называл, но чот надоело, неудобно и некрасиво, так что тут соглашусь со статьёй, что надо просто делать первую букву в названии класса большой и не париться - просто и понятно.

Ну и ещё там пара стрёмных моментов есть, мол, никогда не сокращайте initialize до init (всегда пишу только init), не используйте tab(помойму в сумме меньше нервов будет написать парсер, который заменит при надобности все табы на пробелы, чем истерично жать на пробел, когда надо делать отступы, и отступ с табом выглядит намного опрятнее, чем два пробела, а делать больше пробелов - вредно для большого пальца левой руки + меньше боли, например, при удалении отступов), никогда не полагаться на автоприведение типов (да ну, засорять читабельность кода лишними кастами), специально избегать циклов do-while тоже как-то бредово звучит, ну и ещё там есть несколько бредовых, на мой взгляд, идей.

В общем, очень-очень много спорных моментов.

А так в паре мест кое-что полезное почерпнул.


https://vk.com/beezoya

Сообщение отредактировал puksus - Понедельник, 30 Октября 2017, 01:28
ByurrerДата: Понедельник, 30 Октября 2017, 11:22 | Сообщение # 7
почетный гость
Сейчас нет на сайте
Суть (имхо) венгерской нотации в том, чтобы ставить префиксы, по которым идентифицировать имя, да и для автодополнения очень удобно, к примеру в классе проще написать m и будут выведены все возможные мемберы класса, нежели this->. Помнишь что переменная int типа и достаточно написать i и будут выведены все доступные твои intы. Не можешь вспомнить название класса, вводишь C и автодополнение показывается доступные. И так далее.

Цитата puksus ()

Чёт как-то стрёмно выглядит подчёркивание в конце мембера.
...
В общем, очень-очень много спорных моментов.
А так в паре мест кое-что полезное почерпнул.

Согласен, надо брать то что нравится/более подходит под конкретную ситуацию, идеала не бывает.

P.S. Если интересно почитай наш стандарт оформления кода, его мы сейчас внедряем в наш движок, и опробовали на нашем скриптовом языке (ссылки в подписи), и честно сказать стандартом довольны, код единообразный, хоть и есть некоторые отступления))


Мой блог - ссылка
Мои проекты:
SkyXEngine - графический 3D движок с real-time рендером
s4g - скриптовый язык программирования


Сообщение отредактировал Byurrer - Понедельник, 30 Октября 2017, 11:23
drcrackДата: Понедельник, 30 Октября 2017, 12:40 | Сообщение # 8
старожил
Сейчас нет на сайте
Мне смешно и грустно одновременно, когда люди всерьез рассматривают использование стандартов из прошлого века
Неужели в С++ все так плохо, что это действительно все еще актуально — вписывать тип переменной в ее имя?..

Цитата
не используйте tab(помойму в сумме меньше нервов будет написать парсер, который заменит при надобности все табы на пробелы, чем истерично жать на пробел, когда надо делать отступы, и отступ с табом выглядит намного опрятнее, чем два пробела, а делать больше пробелов - вредно для большого пальца левой руки + меньше боли, например, при удалении отступов)

Да это ж в IDE настраивается, вообще прозрачно для программистов
ByurrerДата: Понедельник, 30 Октября 2017, 12:43 | Сообщение # 9
почетный гость
Сейчас нет на сайте
Цитата drcrack ()
Неужели в С++ все так плохо, что это действительно все еще актуально — вписывать тип переменной в ее имя?

Суть не в типе переменной, а в префиксе, для того чтобы добавить дополнительную идентификацию. Понятное дело когда кода до 1000 строк, то это просто глупо, но когда счет идет десятками тысяч, и в разработке участвует не один человек (особенно удаленно) то это становится уже серьезной проблемой.


Мой блог - ссылка
Мои проекты:
SkyXEngine - графический 3D движок с real-time рендером
s4g - скриптовый язык программирования
drcrackДата: Понедельник, 30 Октября 2017, 12:52 | Сообщение # 10
старожил
Сейчас нет на сайте
Цитата
Суть не в типе переменной, а в префиксе

Нет, суть в том что это стандарты 1980х годов когда и ООП толком не было
И если сегодня в твоем ООП коде получается такая ситуация, что в зоне видимости так много разных сущностей, что без префиксов с ними становится неудобно работать — это тупик, лучше начать заново -) Или как минимум полностью отрефакторить тот класс в котором возникает такая проблема
ByurrerДата: Понедельник, 30 Октября 2017, 15:10 | Сообщение # 11
почетный гость
Сейчас нет на сайте
drcrack, скажи это ребятам из Microsoft

Мой блог - ссылка
Мои проекты:
SkyXEngine - графический 3D движок с real-time рендером
s4g - скриптовый язык программирования


Сообщение отредактировал Byurrer - Понедельник, 30 Октября 2017, 15:10
PepsiDimonДата: Понедельник, 30 Октября 2017, 15:22 | Сообщение # 12
частый гость
Сейчас нет на сайте
Ну могу пожелать только удачи, ведь это сложный ЯП, ну как сложный... Требует много времени. lovegcup lovegcup

Если я тебе помог - поставь + в репутацию. Разрабатываю игру 2dMMoRPG vk.com/kj_project - KJ Project On-Line. Подпишись! https://gcup.ru/forum/9-99364-1 - Пост где я выкладываю новости и скриншоты про KJ Project!
puksusДата: Понедельник, 30 Октября 2017, 20:35 | Сообщение # 13
Пчёлка Зоя
Сейчас нет на сайте
PepsiDimon, мне с++ кажется одним из самых простых языков из-за своей прозрачности.
Вот возьмём джаву, она работает на виртуальной машине, в ней есть сборщик мусора, в ней дженерики (аналог шаблонов в с++) сделаны кривейшим образом (из-за специфики виртуальной машины). В джаве есть ссылочные типы, а есть обычные, а в с++ всё просто, все типы наравне, а хочешь обращаться по ссылке - собсно явно это и указывай с помощью указателя(или ссылки, которую компилятор потом всё равно в указатель переварит). Если хочешь знать язык на профессиональном уровне, эти все тонкости нужно знать, как, где, что и почему работает. Так что лично для меня джава кажется куда сложнее, чем с++. Мне кажется, на неё нужно убабахать больше времени, чтобы полностью освоить.

Поэтому для меня эта тема - скорее о методах, которые будут общими для всех языков. Но поскольку я любитель с++, то было бы намного приятнее читать обо всём этом на с++, ибо понятнее. Но необязательно.

Да, в с++ есть свои маленькие попки, например, размеры стандартных типов не регламентированы и на разныхз компиляторах тот же int может быть разного размера, и свои кое-какие внутренние хитрости есть, но всё же...


https://vk.com/beezoya

Сообщение отредактировал puksus - Понедельник, 30 Октября 2017, 20:38
FlyOfFlyДата: Вторник, 31 Октября 2017, 01:51 | Сообщение # 14
заслуженный участник
Сейчас нет на сайте
Цитата puksus ()

Да, в с++ есть свои маленькие попки, например, размеры стандартных типов не регламентированы и на разныхз компиляторах тот же int может быть разного размера, и свои кое-какие внутренние хитрости есть, но всё же...

Насколько я знаю, C++ почти весь состоит из undefined behaivor, ну ладно, спорить насчет языков, это уже бред


Сообщение отредактировал FlyOfFly - Вторник, 31 Октября 2017, 01:52
puksusДата: Вторник, 31 Октября 2017, 02:22 | Сообщение # 15
Пчёлка Зоя
Сейчас нет на сайте
Цитата FlyOfFly ()
C++ почти весь состоит из undefined behaivor

Это если ошибки допускать, потому что он довольно низкоуровневый. Он работает шустро отчасти потому, что оставляет на вашу совесть следить чтоб всё было в рамках приличного. Но ошибки в любых языках приводят, собсно, к ошибкам, так что не всё так уж плохо. Раньше я думал, что с++ - бох и что все остальные языки мусор, но через некоторое понял, что каждому языку своё применение. Для приложений, для которых производительность не шибко важна, использование с++ может быть нецелесообразным. В Java и c# есть крутые фичи типа сериализации, которую сложно добиться, не делая язык более высокоуровневым и медленным, также джава - прикольно смотрится в серверных приложениях. Lua хорош для скриптов. И т.д.


https://vk.com/beezoya

Сообщение отредактировал puksus - Вторник, 31 Октября 2017, 02:24
FlyOfFlyДата: Вторник, 31 Октября 2017, 06:05 | Сообщение # 16
заслуженный участник
Сейчас нет на сайте
Цитата puksus ()

Это если ошибки допускать, потому что он довольно низкоуровневый. Он работает шустро отчасти потому, что оставляет на вашу совесть следить чтоб всё было в рамках приличного. Но ошибки в любых языках приводят, собсно, к ошибкам, так что не всё так уж плохо. Раньше я думал, что с++ - бох и что все остальные языки мусор, но через некоторое понял, что каждому языку своё применение. Для приложений, для которых производительность не шибко важна, использование с++ может быть нецелесообразным. В Java и c# есть крутые фичи типа сериализации, которую сложно добиться, не делая язык более высокоуровневым и медленным, также джава - прикольно смотрится в серверных приложениях. Lua хорош для скриптов. И т.д.

Соглашусь, сам отношусь к C++ довольно хорошо и понимаю от чего взялись эти undefined behaivor, ну я это сказал в тему насчет прозрачности, в C++ тоже некоторые моменты остаются на волю компилятора и программист не может быть точно уверен, что и как вызываться будет и в каком порядке.


Сообщение отредактировал FlyOfFly - Вторник, 31 Октября 2017, 06:37
ByurrerДата: Вторник, 31 Октября 2017, 09:17 | Сообщение # 17
почетный гость
Сейчас нет на сайте
Цитата FlyOfFly ()
Насколько я знаю, C++ почти весь состоит из undefined behaivor

Это один из самых популярных языков, а UB это лишь из-за отсутствия опыта и навыков. Любой язык можно свести на нет при неумелом подходе.

Добавлено (31 октября 2017, 09:17)
---------------------------------------------

Цитата FlyOfFly ()
в C++ тоже некоторые моменты остаются на волю компилятора и программист не может быть точно уверен, что и как вызываться будет и в каком порядке.

Это искусственный интеллект, без него никак))


Мой блог - ссылка
Мои проекты:
SkyXEngine - графический 3D движок с real-time рендером
s4g - скриптовый язык программирования
FlyOfFlyДата: Вторник, 31 Октября 2017, 11:24 | Сообщение # 18
заслуженный участник
Сейчас нет на сайте
Цитата Byurrer ()

Это один из самых популярных языков, а UB это лишь из-за отсутствия опыта и навыков. Любой язык можно свести на нет при неумелом подходе.

UB же там, из за того что язык очень зависим от платформы(иначе бы пришлось генерировать код не используя , что-то типо эмуляций нужных операций на других платформа, которая отличается от того под которую писался стандарт), а не отсутствием опыта. Отсутствия опыта это когда ты используешь UB, а потом удивляется:"как перестало работать" - это да, это отсутствие опыта, ну не наличие UB в языке - является результатом отсутствия опыта. Я не прав?
ByurrerДата: Вторник, 31 Октября 2017, 11:37 | Сообщение # 19
почетный гость
Сейчас нет на сайте
FlyOfFly, спорить не буду, кроссплатформом не занимался.

Мой блог - ссылка
Мои проекты:
SkyXEngine - графический 3D движок с real-time рендером
s4g - скриптовый язык программирования
Animan2010Дата: Вторник, 31 Октября 2017, 11:50 | Сообщение # 20
постоянный участник
Сейчас нет на сайте
Мне сильно помогла книга Стива Макконнела - Совершенный Код, она обо всем сразу

Anima Games
Animan Publishing
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг