Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
179.
LeonSoft
(13.05.2005 12:59)
0
Почитал Ваши замечения по С++ и Венгерскому стилю.... Мда... Вроде Вы и старше меня на 10 лет и в графике вроде как сильны. И книжки пишите, а извините какой-то детский лепет. Всё в кучу собрали. Я знаю несколько языков программирования. И для каждого найду в любое время своё применение. Судя по всему - не очень то хорошо Вы знаете С++. А 2 эти статьи больше похожи на "почему все на иномарках ездят, ведь наши жигули,москвичи,волги так хороши". В общем однозначный бред - и как-то это не совпадает с неплохим качеством статей по графике.
|
178.
=A=L=X=
(12.05.2005 19:14)
0
Вышла очередная версия GameBase.
Наиболее важные изменения: - введена система меню (теперь, например, можно изменить разрешение игры во время её выполнения) - введена подсистема сохранения параметров игры (последние изменения разрешения сохранятся при следующем запуске) - введены режимы отладки, включаемые клавишами F1, F2 - повышена производительность отображения поля за счёт более рационального использования виртуальных размеров вселенной - в исходниках задокументированы все подсистемы и системы GameBase
|
177.
Денис
(12.05.2005 14:42)
0
Здравствуйте. Когда наконец выйдет книга???
|
176.
Алекс Боресков
(11.05.2005 17:42)
0
2Ravent: Какие модели Вы имеете в виду ? Если сами уровни - то их практически нет, поскольку нет редактора(конвертера). Если каке-то mesh-и - то берите любые из списка загружаемых форматов
Насчет форума - это есть в планах, но скорее всего сначала нужно будет сменить хостинг - стандартные возможности на народе несколько ограничивают
2Ivan: Насчет дельфей - http://www.delphigl.com/ И давайте не будет устраивать flame wars C++ vs Delphi На дельфи можно писать графику и есть примеры этого, но мне лично больше нравится для этого использовать С/С++
2ALX: Я выскажу свои соображения чуть позже.
|
175.
Ravent
(10.05.2005 19:30)
0
Здраствуйте. Очень хотелось бы узнать где можно скачать ВСЕ модели к движку Arwen. И я считаю что пора уже завести форум, а то гостевая уже слишком большая.
|
174.
=A=L=X=
(10.05.2005 12:54)
0
Хех... может уже давно не актуально, но я сегодня прикололся. У кого есть Quake 3 Arena, можете воочию насладится незримой работой, проделанной ID Software по "удалению невидимых полигонов из BSP карты", со всеми вытекающими.
В первых - устанавливаем и запускаем Q3 и заходим в главное меню. Во вторых выходим в командную строку (нажать тильду - ~) и вводим там: /devmap q3dm1 После этого загрузится первая карта без ботов в режиме читов (разработчика).
Сперва убедимся насколько хорошо работает механизм предварительного отсечения Potentially Visible Set (PVS). Зайдём в какую нибудь комнату и введем в командной строке: /r_lockpvs 1 Это строка запрещает движку кваки перестраивать список PVS - фиксирует его. Теперь попробуем выйти из комнаты и убедимся что PVS работает отлично! :D введем /r_lockpvs 0 Это отменит фиксацию PVS.
Далее можно побаловаться с /r_shownormals 1 , но больше всего меня порадовал режим /r_showtris 1 Видно ВСЁ! И количество треугольников из которых состоит сцена, и как при движении на заднем плане подключаются и отключаются PVS. Если внимательно наблюдать за контуром своей тени на полу, видно как она рассекается на части чтобы "улечся" в BSP карты (то же самое справедливо для любых тайлов на стенах - например следов от пуль или взрывов). Причём модельки призов и монстров такому рассечению не подвергаются - видимо оттого, что они "подвешены" далеко от стен карты и дешевле их подвергать z-буферизации. А вот тайлы видимо настолько близко прилегают к стенам, что их дешевле рассечь и подключить к рабочему BSP, чем полагаться на z-буфер). С другой стороны подвижные части лабиринта, такие как двери, тоже не рассекаются, может быть поэтому их в q3 на всех 19-уровнях от силы 4-5 штук? :) В общем наглядное пояснение к статьям квейкоделов. =)
|
173.
=A=L=X=
(09.05.2005 08:19)
0
C/C++ доминируют в мире программирования. Юниксоиды с основ написаны на сях, в винде в Пуск->Программы 85% программ написано на MS VC++, 10% на Borland C++ и оставшиеся 5% - на чём то другом. Так уж повелось. Почему так можно рассуждать долго. C/C++ как правило действительно генерирует более компактный и быстрый код, чем Delphi, но мне кажется тут скорее дело привычки.
|
172.
Ivan
(09.05.2005 03:19)
0
Здраствуйте. Где можно скачать уроки Опен ЖЛ под Делфи. И еще вопрос, почему так любят Си. Проги под Делфи, мне кажется, более читабельны, а писать под графику так вообще резона нет, объясните, чем Делфи хуже. То, что Си -это для системного программирования - согласен, но для Опен ЖЛ - думаю Паскаля хватит. Неужели Си под Виндовс формирует более компактный код от Делфи , что ради этого стоит страдать. Спасибо.
|
171.
=A=L=X=
(08.05.2005 10:09)
0
Здравствуйте!
Прежде всего спасибо автору за полезнейший ресурс!
Сам я не так давно от безделья занялся открытым проектом GameBase, не самые последние исходники,
ресурсы и наполовину написанную сейчас документацию которого можно взять на
www.nvkz.net/adav/programs.html
Цели проекта:
- Создать программный инструментарий, позволяющий разработать любую 3D-игру, концентрируясь на особенностях этой конкретной игры, оставив реализацию самых общих игровых решений данной библиотеке. Количество сцеплений с кодом конкретной игры минимизировано, однако там, где его не удалось избежать вставляется комментарий, содержащий строку: GAME DEPENDED CODE (GDC)!!! - использовать миниммум платформо-зависимых ф-й, чтобы дать предпосылки для облегчения переноса игры на другие ОС (изначально разработка ведется для ОС Windows). Однако это не всегда удавалось и там, где пришлось использовать Windows-ориентированный код вставляется комментарий, содержащий строку: PLATFORM DEPENDED CODE (PDC)!!!
Этот сайт уже многим помог мне!
Чувствую что во многом изобретаю велосипеды, хотя и имею длительный опыт программирования на C/C++
и кучу прочитанных книжек а-ля "как сделать 3D-игру под DirectX 5.0". Да и общими принципами
игроделания (типа BSP) знаком. Тем не менее буду рад любым замечаниям и напутствиям. Их можно оставлять здесь, если они представляют ценность для публики, или непосредственно отправлять
на моё мыло: aa_davСОБАКАmail.ru. (СОБАКА заменить на @) Так же хотелось бы оставить ссылку на мою страничку на этом сайте.
Ну и конечно же не могу не обойти стороной статью автора о C++! :D Читая её постоянно вскакивал с кресла и бродил по комнате бормоча нечленораздельные опровержения,
пугая тем самых окружающих. :))) Такой смеси
Во первых, все программисты C/C++ MUST READ Алена Голуба, которая есть на этом сайте. Много вопросов
и граблей отпадут сами собой, вы научитесь контролировать такой без сомнения сложный язык как C++. В
этом я с автором согласен - ЯЗЫК ДЕЙСТВИТЕЛЬНО СЛОЖЕН. Замечю сразу что в этой книге
рассматриваются и общие для всех языков грабли (треть книги) и грабли, присущие C, и только потом -
грабли C++, так что C++ не корень зла, а лишь логическое продолжение
Во вторых, хотелось бы заметить что в программировании существует разделение на
объектно-ориентированные языки (C++, Delphi, Java) и объектные языки (Perl, JavaScript, возможно
objective-c, что собственно следует из его названия). Если вкратце, то различие между ООП и простым
"объективизмом" в том что объектные языки ориентированы на объекты, а ООП языки - на классы. Другими
словами у ООП языков в отличие от объектных строгая типизация данных. Возможно это послужило
причиной ряда необоснованных обвинений. У объектных язков свои преимущества, но и свои грабли - в
метод легко можно передать неверный объект, что обнаружится только в рантайме, например. Проверять
постоянно есть ли у объекта те или иные методы обременительно как для программиста, так и для
производительности программы.
Насчёт C# здесь распространятся не буду, но можно мой спор с его противниками и мои сравнительные
тесты C# с MS C++ и Borland C++ посмотреть в одном форуме, начиная с этой ссылки и далее: http://forum.nvkz.net/index.php?showtopic=5000&st=15 Там я - =A=L=X= В целом я на C# возлагаю большие надежды.
Впервые слышу что к парадигме ООП относят такие "фишки" как persistance или делегирование. Всюду
где читал в основе её были только 3 вещи: наследование, полиморфизм и инкапсуляция данных. Не нашёл
в статье серьезных обоснований чтобы утверждать что C++ с этими вещами не справляется. Наследование
есть даже множественное, чего не встречал ни в одном другом языке! В других языках этот момент
обходят множественным наследованием интерфейсов, которое впрочем сталкивается с теми же самыми
проблемами, что и множественное наследование. Виртуальные ф--ии есть. Инкапсуляция данных - это уже
совесть программиста. Замечу только что инкапсуляцию не надо путать с тотальным "упрятыванием"
данных. Инкапсуляция значит что объекты общаются друг с другом по строго установленному интерфейсу,
не собираясь даже разбираться с тем как этот интерфейс реализован другим классом на внутреннем
уровное. Отсюда растут ноги тому факту что все данные объекта уходят в private и protected секции. Так что ООП C++ реализует в полной мере.
Насчёт АТД. САМ СТРАУСТРУП ТАК И ПИШЕТ что "одной из целью создания C++ была возможность
создания программистом своих собственных типов данных, с которыми можно было бы работать так же
просто как и с примитивными типами, но при этом чтобы они не уступали им в своей эффективности".
Пример - complex. Просто в языке отсутствует ключевое слово final (как в яве) или sealed (как в C#),
запрещающее наследовать от класса, чтобы закрепить этот момент в умах неопытных программистов. Все эти "конструкторы копирования" и "операторы присваивания" нужны в языке ТОЛЬКО и ТОЛЬКО для
реализации АТД. Реальные программы, как правило состоят из объектов совсем другого рода, которые
используют АТД наряду с примитивными типами данных. Реальные объекты как правило создаются в куче
и никогда друг другу не присваиваются и не копируются в параметр по значению - посмотрите на MFC или
VCL. Ведь только храня объекты в куче по указателю на них мы имеем в полной мере а) динамические
данные б) "полиморфизм без затыков". Для этого в языке и созданы new и delete - единственные
"узаконенные" RTL ф-ии. Вся STL - это по сути ядрёная и действительно труднопонятная реализация кучи АТД через шаблоны.
Причем эта куча АТД действительно главным образом предназначена для работы с подобными же АТД! С
этим вряд ли кто то будет спорить, и не вижу в чём тут негатив, кроме того, что действительно хорошего
способа хранить список указателей на объекты с автоматической деструкцией оных в STL действительно
нет. Раз нет - сделай сам, невелик труд...
Бла бла бла... Устал спорить, слишком много спорных моментов, да и не люблю споры, не проходящие в
личном общении за кружечкой-другой пивца, просто попытаюсь дать своё видение суммирования
негативных черт C++, как их подытожил сам автор:
> 1. Переход с на С++ очнь сложен, многие специалитсы считают, > что лучше учить С++ с нуля. В С++ масса хитрых ловушек, > просто непонятных для пользователей С++.
Согласен. Все дружно читаем хорошую литературу и ОБЯЗАТЕЛЬНО Алена Голуба, который или ссылка на
которого есть на этом сайте. Даже если вы программируете на C или любом другом ЯВУ первые главы
книги будут крайне полезны.
>> 2. Неявно добавляемый самим компилятором код может убить эффективность полностью.
Может. Вывод из первого пункта - сперва разберись, потом программируй. Пример с путаницей передачи
по значению с передачей по ссылке мне тоже не понравился - это есть во всех языках, C++ тут ни при чём.
Кстати из того же Голуба - передача по ссылке в C++ является альтернативой передачи указателя на
переменную, и не должна применятся нигде кроме как в конструкторах копирования, перегрузки
операторов и т.п. Т.е. там, для чего передача по ссылке вообще была введена в язык. Естественнее вместо
&a + &b писать a + b, или еще чего хуже: a.operator+( &b ). В прочих методах передавайте указатель на
объект/переменную если хотите самозадокументировать ф-ю.
>> 3. Известен способ, как заставить компилятор не выдавать ошибку >> на неверное количество параметров, передаваемых функции.
В C для этого достаточно было просто не подключать заголовочный файл модуля, где ф-я определена. При этом компилятор, не видя определения ф-ии полагает что ф-я имеет произвольное число параметров,
каждый из которых - int (по умолчанию). Именно поэтому мы можем определять ф-ю main как void main(), как int main() или как int main( char *... ),
RTL всё равно вызовет её, передав все параметры. Связь ф-ий происходит линкером исключительно ориентируясь на имя ф-ии, без учёта сколько у неё
аргументов и какое у неё возвращаемое значение. Это известная фишка всего семейства C/C++, думаю что C++ просто унаследовал это поведение от C,
который в свою очередь унаследовал это поведение от ассемблера, на который равнялся. Так что
собственно C++ обвинять не в чем. Это общая проблема концепции заголовочных файлов, компилируемых
в *.obj файлы модулей, которые потом будут линковаться друг с другом линкером исходя только из
мнемонических имён идентификаторов, которые с точки зрения линкера являются просто адресами в
адресном пространстве целевого EXE, DLL или LIB. Проверка типов и ф-ий происходит только в момент
компиляции на основании заголовочных файлов. Это можно выставлять как минус - долгая сборка
заголовочных файлов и потенциальные грабли зашитые в неверной декларации ф-ий, так и как плюс - C++
был совместим со всеми языками, генерирующими *.OBJ файлы. В то время когда язык создавался второе,
очевидно, было важнее.
Что касается в целом контроля корректности введенных программистом выражений попробуйте в C,
например, такое: ((void (*)())0)(); :)))
Ладно, в целом вечности не хватит чтобы спорить на подобные как их метко Ален Голуб назвал
"религиозные" темы, но не мог не высказаться, распирало. ;)
А вообще надеюсь что то полезное из моего начинания тоже выйдет.
|
170.
Алекс Боресков
(06.05.2005 09:22)
0
Насчет D не знаю, никогда не пробовал. Но с очень большим подозрением отношусь к языкам с жесткой типизацией (как я понял D именно такой) и без нормальной поддержки метаинформации (не знаю как у D дела здесь)
|
169.
Skywalker
(01.05.2005 02:51)
0
Вот, жаль что мало распространен, по возможностям превосходит мелкомягкий си-шарп и солнечную жабу.
http://www.digitalmars.com/d/
|
168.
А. Зудин
(30.04.2005 02:46)
0
Здравствуйте. Посмотрел на оглавление Вашей книги о расширениях и не нашел ничего о GL_KTX_buffer_region. Если вы с ним знакомы, может быть знаете, почему оно упорно отказывается работать на ATI Radeon-ах?
|
167.
An-v1
(20.04.2005 21:59)
0
Не знаю на счет ссылки, но когда учился сайты делать, читал про дизайн - четко запомнил, что выполненый сайт в светлых тонах (не ярких) намного легче воспринимается психически, причем должна быть соблюдена уветовая гамма - но это уже дело дизайнера, а не программиста. Вот.
|
166.
Алекс Боресков
(20.04.2005 18:28)
0
СПасибо за программистский юмор.
Насчет изменения цвета фона - мне кажется, что слишком яркий фон будет просто утомлять глаза. А насчет - считается - не могли бы Вы дать ссылку, мне будет интересно прочитать доводы против черного фона.
|
165.
An-v1
(20.04.2005 07:36)
0
Привет, я смотрю ваш сайт сильно развился - просто круто. есть что почитать (и очень много :)). Хотел спросить, может стоит дизайн немного изменить - считается, что черный фон не благоприятен. Вот допустим если сделать белый.. но это чисто мое ИМО.
|
|
|
|