![]() |
Модераторы: Rickert |
![]() ![]() ![]() |
|
Rickert |
|
||||||||||||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Сегодня мы поработаем над парой базовых классов для нашего проекта. А именно:
Я советую вам создать пустой “win32 console” проект и в нём время от времени дебажить некие маленькие алгоритмы. В частности, сейчас будем писать класc строки. Называйте, как хотите, а у меня это класс “aString”. Что должен будет уметь наш класс?
Вообщем – то здесь всё прозрачно и ясно. Конкретная реализация идёт дальше: тут вам придётся поработать самим в некоторых местах. astring.cpp
Получается, что в первой нашей части теории практической никакой нет: просто отрабатываем общие принципы создания классов и включаем воображалку. Идём дальше. Двусвязанный список Он состоит из одного файла описания, потому что будет основан на шаблонах. aList.h
Помните: чем больше исключений вы обработаете и отбросите – тем стабильнее будет ваш код. В идеале, программист должен уметь предусмотреть абсолютно все варианты, которые могут привести к крушению приложения. Дальше, по программе – чай с сахаром, а затем маленький класс вектора, который будет использован для больших деяний ;-) avector.h
Ну и файл реализации (avector.cpp):
Слов и аналитики мало, потому что тут голые и незамороченные факты. Спрашивайте, пишите, подскажу, если что ;-) Да прибудет с вами великая сила! Добавлено @ 15:11 Поиграйтесь с классами, поищите баги у меня в коде, предложите свои улучшения, научитесь всем пользоваться: вы большие мальчики/девочки - сможете. Это сообщение отредактировал(а) Rickert - 20.10.2008, 03:45 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
||||||||||||
|
|||||||||||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
хотяб привели примеры, для чего это нужно...
вообще, если это цикл статей стоило бы начать с общего обзора функций движка (и вообще что это такое общими словами), постепенно переходя к более низкоуровневым операциям (как например предложенный код). |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: нет Всего: 154 |
для чего нужны строки, или списки? ну и тем более совсем непонятно для чего в графическом движке может пригодится класс вектор
![]() для танкистов: это была ирония |
|||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
Lazin, хоть и ирония - выскажусь
![]() Не списки - а двусвязные списки. И почему списки (и разница в односвязном и двусвязном), а не массивы, чем отличаются, что где лучше применять. Зачем нужен вектор, что это вообще такое. Почему нет примера его использования (это ведь "на пальцах" "От и До") ![]() Да и про "графический" ничего не сказано. PS Автор сам сказал "спрашивайте, пишите" ![]() Это сообщение отредактировал(а) AntonN - 19.10.2008, 22:57 |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: нет Всего: 154 |
это точка, в 3-х мерном пространстве(разве названия переменных - x, y, z не вызвали поозрений?), правда у Rickert-а он реализован неканоничъно ![]() |
|||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
Lazin, не обязательно в трехмерном. Я знаю что такое вектор (в контексте геймдевелопмента), я про то, что в статье "движок на пальцах От и До" ожидалось объяснения, что такое вектор и чем он лучше хотя бы "обычных" переменных углов и значения скорости, и хотя бы внятный пример использования.
|
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Неканонично - это как? ![]() Что значит "в контексте геймдевелопмента"? Что в контексте стереометрии или анал. геом. вектор - другое существо? Это сообщение отредактировал(а) Rickert - 20.10.2008, 04:25 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: нет Всего: 154 |
Обычно, для преобразования координат используют матрицы, для двухмерного случая, сам вектор должен быть 3х мерным |x, y, 1|' а матрица описывающая преобразования ад ним должна быть размерности 3х3, в этом случае любое преобразование над координатами можно получить умножением вектора на соответствующую матрицу, помимо этого такие матрицы можно перемножать, это очень удобно, так как не нужно писать ф-ю поворачивающую вектор на нужный угол, ф-ю смещающую по х и по у и тд.. к тому-же если действий много, достаточно просто перемножить матрицы которыми эти действия описываются, а потом с помощью полученой матрицы преобразовать координаты вершин http://www.compgraphics.info/3D/3d_definitions.php |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Lazin, и как это связано с нашим классом вектора? В чём неканоничность - я слова этого понять не могу?
Да, для преобразований большенство использует умножение на матрицу (кстати не понимая что происходит с геометрической точки зрения), но что нам мешает применить матрицу к нашему вектору? Я это проделываю, и мы будем это проделывать без каких - либо проблем. Это сообщение отредактировал(а) Rickert - 20.10.2008, 08:27 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: нет Всего: 154 |
мне это слово нравится ![]() просто в этом классе нет метода для умножения на матрицу, что не очень удобно, вот поэтому я так и сказал... |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Вопрос того надо ли подобные методы прописывать в класс, или держите в спец. синглтоне обсуждался ни один раз. Тогда все вместе пришли к выводы, что вместо того чтобы забивать память под одну и туже процедуру тысячи раз, лучше написать единожды.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
noKEmoH |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 30.10.2008 Репутация: нет Всего: нет |
Если движок уже существует и находится в режиме отладки или оптимизации то, ничего...
а если он на стадии разработки то я бы предложил в векторе место x y z использовать массив на 3 элемента, тогда не возникнет проблем прохождения массива векторов указателями. ps некоторые бояться напортачить указателями, если это так тогда тоже ничего. Это сообщение отредактировал(а) noKEmoH - 31.10.2008, 01:34 |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
А зачем и чем это лучше? -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
noKEmoH |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 30.10.2008 Репутация: нет Всего: нет |
у меня массив структур
неполучилось связать с функциями glVertexPointer ... glDrawElements, а
заработало без проблем |
||||
|
|||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
noKEmoH, а зачем его связывать? Модель (то что ты отображаешь), по определению состоит из вершин, а не векторов. Мухи - отдельно, котлеты - отдельно.
Это сообщение отредактировал(а) Rickert - 1.11.2008, 12:12 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
noKEmoH |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 30.10.2008 Репутация: нет Всего: нет |
ну у меня векторы и вершины используют одну структуру основной элемент которой m[3]; Хотя можно и написать для вершин и векторов отдельные классы.
|
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
noKEmoH, это значит ты неправильно архитектуру строишь. Всё должно быть логично, ибо программирование - это логика в чистом виде.
Не надо никаких классов вершин. Просто когда ты будешь делать класс модели, заводи указатель на тип float и пиши в память вершины. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 7 Всего: 232 |
Хорошее начинание, годится для написания небольшого трактата на тему "сферический конь в вакууме".
Можно присоединиться? ![]() Движок "сферический конь в вакууме (СКВВ) для DirectX": 1. СКВВ состоит из основных подсистем: графика, физика, игровая логика (AI если угодно), звук, работа с данными (загрузка-выгрузка ресурсов). Рассматриваем только графику, остальное пока отбросим. 2. Графическая подсистема функционально представляет собой бесконечный цикл, в котором отрисовывается кадр. Структурно это набор классов, где присутствуют следующие основные понятия:
Для каждого 3D объекта в сцене рендерер выполняет:
7. Что ещё нужно для отрисовки геометрии. Вершина состоит из произвольного (определяемого программистом) набора данных (position, normal и т.п.), можно представлять её себе как массив из разного типа элементов. Например: Vector3 (XYZ вектор из 3х float-ов), Single (один флоат), Vector4, ushort и другие. Для указания формата вершины, вводится понятие vertex declaration - массив описателей формата и семантики каждого элемента вершины. Без установки Vertex declaration на девайс отрисовать вершинный буфер нельзя 8. Как считать мировую матрицу и что это вообще такое. Для преобразования координат вершины в экранные координаты, выполняется трансформация "local->world->view->projection", где "local" - это координаты вершины взятые из вершинного буфера, "world" - координаты после мировой трансформации или мировые координаты. Мировые координаты - это позиция вершины в общем 3D пространстве сцены. Все 3D объекты содержат текущую позицию в мировом пространстве. Матрица трансформации для перевода в мировые координаты расчитывается как произведение трёх матриц: масштабирование, поворот, сдвиг. Первое действие соответствует размеру 3D объекта, второе - ориентации в пространстве, третье - позиции в мировых координатах. Оставшиеся две трансформации "view" и "projection" соответствуют камере и размерам окна на экране. 9. Что делает вершинный шейдер для вычисления экранных координат. В вершинный шейдер попадают данные одной вершины, разбитые на элементы (position, normal и т.п.), взятые из вершинного буфера в соответствии с форматом указанным в vertex declaration. Шейдер получает position (это вектор из 3 или 4 флоатов) и трансформирует с пом. матрицы "local->world->view->projection" (обычно local пропускают и называют эту матрицу worldViewProjection). Матрица worldViewProjection считается способом описанным выше и представляет собой матрицу 4x4 флоатов. Результат трансформации - вектор XYZW, где первые три координаты делённые на четвёртую дают позицию на экране и значение Z для теста глубины. Этот вектор ещё называют однородными координатами или position in clip space или position in homogenous clip space. Матрица worldViewProjection (как и другие данные, на усмотрение программиста) передаётся в шейдер через набор глобальных переменных - из называют константами шейдера. 10. Что делает пиксельный шейдер для вычисления цвета пиксела. Пиксельшейдер принимает доп. данные от вершинного шейдера и имеет в своём распоряжении доступ к текстурам а также константам пиксельшейдера. На основании этого можно к примеру взять пиксел из текстуры по текстурным координатам принятым из вертексшейдера, "осветить" умножением на интенсивность и цвет источника света и вывести в результат. 11. Ну и так далее, рандомные мысли приходящие в голову. -------------------- ![]() |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
mr.DUDA, никакого рандома в этом нет. Если ты считаешь что сначала надо рассказывать людям об инициализации окна, не имея базовых классов, вставлять фразы типа "а вот это мы напишем потом" - то пожалуйста напиши свою статью, но ведь ты этого не сделал
![]() -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 7 Всего: 232 |
Rickert, если со строк начинать, то большой шанс завязнуть в деталях и так никогда и не добраться до верхнего уровня. Цель моего поста - показать что можно просто объяснить народу основные принципы программирования 3D-графики, хотя бы охватить главные понятия, без которых любая попытка программирования превратится в копипаст. Скомпилировать чужой код и увидеть как он работает это хорошо, но написать свой - ещё лучше.
![]()
Про инициализацию не говорилось ни слова, было упоминание что девайс связан с окном, в порядке объяснения что за девайс такой. В таком же духе всё можно разложить по полочкам, потом набросать простой пример игрового цикла ну и так далее. Ни в коем случае не буду мешать, на собственную статью у меня усидчивости не хватит ![]() P.S. если не в тему влез, могу удалить свой пост ![]() -------------------- ![]() |
|||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
mr.DUDA,
уже на это намекалось, как я понял, статья пишется для себя, а не как учебник. |
|||
|
||||
Rickert |
|
||||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Значит ты предолгаешь строить дом с крыши? ![]() Невнимательно читал: 1/5 кода я оставляю за читателем, и если он его не напишет сам - то не сможет ничего делать дальше. Копи/паст тут не прокатит. К тому же объяснений принципов и теории люди в яндексе и гугле найти могут. Я конечно велосипедист, но не до такой степени.
С этим согласен, к этому и идём. В споре рождается истина, мой друг ![]() -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
||||
|
|||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
Rickert,
нет, он предлагает начать с понятия "дом", "несущщие стены", "фундамент", а не с понятий "кирпич", "дверная ручка" и "решетка для вентиляции" ![]() |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
не считаешь что начать с кирпича и бетона логичнее? -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
Нет, конечно, я считаю для начала "От и ДО" должны ввести понятия "дом", "фундамент". А потом уже переходить к кирпичам и дверным ручкам.
PS Конечно это только мое имхо. Это сообщение отредактировал(а) AntonN - 6.11.2008, 13:00 |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
AntonN, дом и фундамент из чего строят? Из кирпичей или из домов и фундаментов?
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
дом стоят по плану.
не нужно так однобоко смотреть. ADD В общем, если нет желания понять и пересмотреть свою точку зрения, предлагаю оффтоп прекратить ![]() Это сообщение отредактировал(а) AntonN - 6.11.2008, 20:05 |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 7 Всего: 232 |
Смотря для чего, опять же. И для кого объяснять.. Если для строителя-ремесленника, то можно показать что такое кирпич и из чего делается раствор, и как они совмещаются. Ну и дальше как кирпичи укладывать между собой и как стену ложить. Отсюда наверное можно объяснить, как дом строится, но на примере конкретного дома (в котором мы стенку вначале строили из кирпичей), и более-менее понять как там остальные части сделаны и склеены. Но на такой дом уйдёт много времени, т.к. строителю придётся показывать не только как кирпич кладут, а ещё и как провода устроены (электричество провести, розетки поставить), из чего трубы делают (канализацию и водопровод провести), как обои клеить наиболее оптимальным способом, где какую краску и шпаклёвку использовать, какие уголки для плинтусов юзать, как правильно двери навешивать... ну и так далее, улавливаешь идею? Это на годы растянется, и толку - чуть! С другой стороны, давай-ка мы объясним что такое архитектурный проект, как вообще проектируются здания, из чего состоят, какие этапы при строительстве проходят и какие материалы в общем требуются на постройку. На примере отдельного сарая покажем как сооружение возводят и какую технику используют. На общем примере здания растусуем, какие подходы используют для строительства произвольного здания. Разницу видишь? От общего к частностям а не наоборот - вот правильный подход. Если ты не в состоянии охватить общую картину, донести её в сжатом виде к аудитории, значит тебе придётся рано или поздно столкнуться с тем что ты упрёшься в вопрос "а что дальше?". От строк, списков и более сложных вопросов выйти на охват всего игрового движка - очень маловероятно; двигаясь в обратном направлении - запросто. -------------------- ![]() |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Вообще пусть каждый пишет так, как считает нужным
![]() Я выбрал такой путь - как мне кажется так дома не строили ещё. А что получится на выходе - увидим. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
noKEmoH |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 30.10.2008 Репутация: нет Всего: нет |
Rickert короче чтобы не цеплялись, на главной странице напиши примерную структуру классов с описанием, что и зачем нужно, и все будет
![]() |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Нет, не буду, пусть цепляются, а то людям заняться нечем будет ![]() -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 7 Всего: 232 |
Rickert, давай просим !!!!!!!!!!!!!!!!!!!
![]() ![]() ![]() -------------------- ![]() |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
Rickert, ты не прав в том, что чтобы написать свой класс rickert::string не нужно ставить перед собой цель сделать движок. А mr.DUDA прав в том, что разрабатывать систему нужно от общего к частному. И описание, которое он привел - это реальный результат работы над 3D движком.
Обратный пример (от частного к общему) у нас с ним перед глазами, можешь поверить на слово ![]() |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
arilou, путь к взлёту лежит через школу, тренажёры, наземную практику и тысячи - тысячи других процедур
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
которые никакого отношения не имеют к геймдеву ![]() |
|||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
оставьте человека в покое, он уже сказал, что ничего менять не будет
![]() |
|||
|
||||
Ryoga |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 20.9.2005 Репутация: 3 Всего: 6 |
Скорее соглашусь с последним оратором. Каждый имеет право на свой путь в геймдеве.
![]() ![]() |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Эм, а можно вопрос:
зачем оно надо, если оно дублирует СТАНДАРТНЫЕ классы языка C++? Нет, я конечно понимаю, что НЕКОТОРЫМ нубам влом учить стандартные классы, но таких далеко не большинство. Да и собственный костыль НЕ упростит им задачу, но создаст сложности тем, кто уже знает C++(как минимум время на изучение класса) |
|||
|
||||
noKEmoH |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 30.10.2008 Репутация: нет Всего: нет |
...а когда я писал двигло, мне говорили зачем пишеш есть ирлич готовый, есть нубала готовый, бери и юзай...
|
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
noKEmoH, разные ситуации.
В одной ситуации старая штука не удовлетворяет требованиям и надо писать новую с абсолютно другой структурой, в другой же достаточно добавить пару необходимых методов в стандартный класс. |
|||
|
||||
noKEmoH |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 30.10.2008 Репутация: нет Всего: нет |
понимаю, свой класс никогда не будет быстрее стандартных, но всетаки он будет свой
![]() |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
1) неотлажен 2) недокументирован 3) нераспространен |
|||
|
||||
Ryoga |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 20.9.2005 Репутация: 3 Всего: 6 |
Собственно почему не будет быстрее? Стандартные то классы должны быть написаны для общих случаев и не факт, что на каком-то примере, который имеет место быть в пишущейся программе, этот класс будет быстрее, чем тот, который будет написан самостоятельно под конкретную задачу. Так что, иногда можно и свой класс написать, если уж задача реально требует экономии в каких-либо местах, иначе безбожно тормозит. А так, лучше использовать проверенное старое, по тем причинам, что обозначены выше. Короче, начинать лучше со стандартных средств. Думаю это всего касается.
|
|||
|
||||
noKEmoH |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 30.10.2008 Репутация: нет Всего: нет |
ну вобщем да, итераторы тормознее указателей. А насчет минусов несогласен, я думаю что куча народу на форуме тут же обругает и ткнет носом в не отлаженые баги. Какая - никакая, а документация ведется да и распространение будет по крайней мере частью читателями темы. А зачем нужны аналоги стандартных классов, и насколько они полезны можно будет узнать после последней компиляции всего движка. ...надо погодить со спорами...
|
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
1) Никто не сказал что вам подадут блюдечко с голубой коёмочкой, а на нём движок. 2) Смеётесь? Что тут документировать? Спорные моменты, где так сразу не въедешь что и как происходит - рассказал. 3) Тут дело за вами ![]() P.S. Со след. статьёй сильно задерживаюсь, простите: личные заморочки. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Ну вот и единомышленник. Кому приятно играть в игры, типа Crysis, bioshok - которые написаны для продажи? Вам нужно апгрейдить комп, вам нужно переплачивать деньги. А за что? За то что кто-то писал движок для продажи? Лично я убеждён, что для каждой игры должен быть свой "заточеный" движок, что игры делаются в первую очередь для игроков, а не для рынка. Ну а сейчас совсем другая мода. Ладно, носите туфли, а я буду ходить в практичных кедах ![]() Вообще есть идея основать фирму, которая бы занималась бесплатными играми серьёзного уровня. В процессе разработки и после выпуска игры, разместить кнопку аля "Donate" - и пусть уж сами игроки оцениваю то на сколько хороша игра. На эти средства поддерживать сервер, и после, возможно, выдавать зп "работникам". Понимаю, мало кто сейчас может разделить энтузиазм, но я не вижу другого варианта изменения современных событий в РИ. Да - да, много кто тут сейчас напишет "да писать движки под каждую игру - это монструозный труд, тем более в свободное время, нам работать надо". Ну вот и работайте, а я пока сколько играми занимаюсь: не видел задач настолько монструозных, чтобы не решить их. Просто человек - скотинка ленивая и ему проще пойти поваляться на диване, нежели напрячь свой мозг лишний раз. К тому: ну раз, другой поработаете с bsp-деревьями, и комбинированной скелетной анимацией - разберётесь и на всю жизнь запомните, а то как будето каждйы раз надо будет новые технологии сложнейшего уровня осваивать. "Планета вертится, потому что я в неё упираюсь!" Это сообщение отредактировал(а) Rickert - 18.11.2008, 06:11 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: нет Всего: 154 |
||||
|
||||
Ryoga |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 20.9.2005 Репутация: 3 Всего: 6 |
Ооооооооой, Бог мой. -_- Да нет, детский сад, это пост перед этим. Где-то, по-моему, я это всё уже читал в соседних темах. Короче, Rickert, прежде чем гнуть пальцы сделайте хоть одну бесплатную игру "серьёзного уровня" по такой системе. Желательно удачную. Желательно не одну. И будет Вам почёт и уважение. Вот тогда и будете рассказывать, какие все кругом жадные, и какой Вы альтруист - иначе цена всем этим словам ноль.
|
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Ryoga, считаете мои статьи не достаточно квалифицированными - не читайте. Любите использовать готовое - не читайте. Не нравится мой подход - не читайте. Считаете статьи детскими - напишите хоть что-нибудь сами.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
|
|||
|
||||
Ryoga |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 20.9.2005 Репутация: 3 Всего: 6 |
Rickert, мой комментарий касался не статьи, а вот этого замечательного сообщения, о чём я и написал.
Ждём Ваших игр. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: нет Всего: 154 |
мое утверждение касалось только того, что итераторы, якобы тормознее указателей... это только детям дошкольного возраста можно рассказывать
![]() |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
|
|||
|
||||
Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
Флеймеры
![]() Rickert , жду третью часть ![]() --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
BalmaR |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 11.11.2008 Репутация: нет Всего: нет |
Классные занятие, сам тока вливаюсь
|
|||
|
||||
Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
3 часть
![]() |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: 3 Всего: 3 |
Вот это крруто, вот это аж меня воодушевило вернуться в игрострой даже - честно..!! Каков этузиазм просто поражает.. Rickert уважаю.. Я тут честно говоря забросил на пол года заниматься игростроем, перепрофилировался на написание клиент серверных программ и программ удалённого администрирования и всё это на Delphi, но теперь пожалуй продолжу заниматься и игростроем, также я как то обещал начать писать цикл статей и выкладывать свои наработки (движок) для всеобщего обсуждения, но у меня в один момент просто не хватило времени суета всякая, и произошло зацикливание разработки вообще на смешном - на банальной отрисовке пулевых отверстий на стенах.. Теперь по циклу статей, что начал писать Rickert, должен сказать что это пригодится как для базового понимания самого языка, стиля и метода программирования на С++, так и очень сильно пригодится впоследствии уже при написании самого движка особенно при написании GUI (так называемого графического пользовательского интерфейса) вывод и ввод текста при выводе игровой консольки к примеру, а написание GUI поверьте по собственному опыту говорю - это на самом деле очень сложная задача.. Статьи получились необычные конечно, но кое что я оттуда я подчерпнул интересное, да как сказать подчерпнул - узнал многое!, так что ждём продолжения. Rickert молодца так держать !!!! ![]() --------------------
Джедаи не пройдут.. |
|||
|
||||
nerezus |
|
||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Мне приятно. Прошел половину биошока на одном дыхании.
|
||||
|
|||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: 3 Всего: 3 |
Кстати вот скриншоты моего движка того, что удалось добиться за это время..
конечно не супер пупер, но то что есть на данный момент.. Это скриншот из GR Engine 2.0 (2006 год) поддержка относительно небольшого кол-ва полигонов .. ![]() Это скриншоты уже из GR Engine 3.0 доработанная версия, поддержка большого кол-ва полигонов.. ![]() Pic. 1 ![]() Pic. 2 Это сообщение отредактировал(а) php - 29.11.2008, 14:39 --------------------
Джедаи не пройдут.. |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
"Земля крутится - потому что я в неё упираюсь"
![]() -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Ryoga |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 20.9.2005 Репутация: 3 Всего: 6 |
php, создайте себе тему отдельную - будете сообщать там о своих успехах по доработке движка. Было бы интересно.
![]() |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: 3 Всего: 3 |
Обязательно создам только вот название какое бы придумать? "Программирование игрового движка" к примеру
подойдет или нет как считаете ?? Почему именно программирование т.к описание будет вестись только по программному коду, создание и разработка 3D-моделей пока затрагиваться не будет (да и в данном разделе форума это и не обсуждается вроде!), т.к созданием моделей занимается другой человек, поэтому по всем аспектам создания и реализации той или иной 3D-модели, если что будет адресоваться к нему.. Вот его недавние наработки (боевой корабль Chu Untor, по мотивам вселенной StarWars!) Кол-во полигонов пока неизвестно, нужно будет уточнить у разработчика (по рисунку видно, что очень много), соответственно эта модель тоже будет впоследствии как тестовый вариант интегрироваться в GRE (GreenRay Engine) (С)Master Lucky ![]() Это сообщение отредактировал(а) php - 30.11.2008, 07:04 --------------------
Джедаи не пройдут.. |
|||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
а по моему так мало... |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: 3 Всего: 3 |
Уверяю! Очень много, на рисунке палубы видите квадратиками идут это не текстура это всё модель, задние круглые двигатели тоже не картинка скриншот сделан из окна 3DS Max, впрочем гадать не будем узнаю точнее у самого разработчика..
--------------------
Джедаи не пройдут.. |
|||
|
||||
Ryoga |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 20.9.2005 Репутация: 3 Всего: 6 |
php, в названии как-то укажите, что это Вы свой движок разрабатываете.
![]() ![]() |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
![]() -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: 3 Всего: 3 |
Ну это уже всё имеется, собственно.. ![]() Rickert приносшу свои извинения, что развёл тут всю эту "бадягу" в вашем топике, удаляюсь.. ![]() --------------------
Джедаи не пройдут.. |
|||
|
||||
Master Lucky |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 22.1.2008 Где: Торонто, Канада Репутация: нет Всего: нет |
Извиняюсь за офф топик, просто хочу встать на защиту своей модели. В модели 78 725 поликов и это она ещё выполнена на 30% AntonN это тебе мало?
Это сообщение отредактировал(а) arilou - 22.4.2009, 15:06 |
||||||
|
|||||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Master Lucky, для этого существуют личные сообщения.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |