* * * Форумы на Наша-Life THREAD * * * -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- THREAD : Основы программирования Started at 29-07-2008 11:48 by Vasez Visit at https://bbs.hl-inside.ru/showthread.php?threadid=46325 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 1] Author : Vasez Date : 29-07-2008 11:48 Title : Основы программирования Вот решился, наконец-то заняться программированием на C++, и тут возникло несколько вопросов: Не подскажете книгу желательно в электронном виде(на русском языке), где подробно разжёвывается программирование для новичков на C++ В среде вижуал студио 2005? На какие аспекты языка стоит особенно обратить внимание, чтобы в дальнейшем программировать под хл2? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 2] Author : ALPINE Date : 29-07-2008 14:02 [b]Шилдт Герберт - C++ руководство для начинающих[/b] я изучал по ней... всё просто и понятно, я хоть и не ас в программировании, но порекомендовал бы её за простоту, ясность и объёмность. в электронном виде (отсканированная) должна где-то быть, поищи. [size=1][i]ALPINE добавил [date]1217337324[/date]:[/i][/size] P.S. обращать внимание надо на всё. в особенности, наверное, на классы и на всё, что их касается (наследование и т.п.). -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 3] Author : KLIMaka Date : 29-07-2008 14:34 Думаю, тему можно прикрепить, ибо вопрос такой вставал здесь неоднократно, и заодно люди знающие смогут здесь отписать свое мнение единожды, давая тем самым отправную точку начинающим. Сначала к вопросу об литераторе. Книг существует великое множество, и брать для начала нужно то, до чего дотянутся руки. Брать желательно книги в названии которых присутствуют такие слова как: «самоучитель», «начинающим», «руководство» и т.д. В качестве первого опыта подойдет практически любая такая книга. Это уже потом, набравшись опыта можно отличить хорошую книгу от плохой. Вот список признанных книг: - Стивен Прата Лекции и упражнения по С++ - Герберт Шилдт. С++. Руководство для начинающих - Стенли Б. Липпман и Жози Лажойе. С++ Вводный курс. - Роберт Лафоре Объектно-ориентированное программирование в С++ Кстати, «С++ для чайников» - тоже весьма неплохой выбор. Насчет литературы конкретно об студии – это как-то мимо меня прошло. Теперь к специфике СДК. Главное, конечно же, уметь читать и понимать код (плюс английский язык). Ибо самая полная и достоверная информация об программировании в ХЛ2 находится именно в коде. Все эти туторы – это конечно очень хорошо, но на копипасте далеко не уедешь. По порядку: - Нужно понимать что обозначает та или иная запись. Что, обозначает «*», чем отличается «.» от «->» или передача параметра по ссылке или по значению. Что обозначает кейворд const и где он используется и т.д. - Типы данных. Явные, неявные приведения , размеры данных, последовательность вычисления, битовые операции, желательно хотя бы примерное знание об представлениях данных (почему над float нельзя проводить битовые сдвиги). - Типы памяти. Автоматическая, статическая, динамическая – чем отличаются, как объявляются. Время жизни, область видимости. Ссылки, константы указатели. Оператор new и утечки памяти. Вообще, от прямого менеджмента памятью стоит воздержатся. - ООП. Объекты, полиморфизм, наследование, иерархии классов. Абстрактные классы. - Препроцессор. Макроопределения и их использование. - Компоновка. Заголовочные файлы, обьявления, определения, единица компиляции, экстерны, линковка. - Шаблоны. Основные понятия, специализация, ограничения. Ну это первое, что в голову пришло… Еще к этому дополнительно стоило бы знать что либо об векторах, матрицах, аффинных преобразованиях, полярных координатах, RBGA-цветовом поле. Самый главный скилл – умение искать! Вы должны уметь найти в коде то, что вам нужно. Почаще юзайте поиск по именам функций, констант, классов. Так вы увидите где и как они применяются, и таким образом лучше поймете как они работают. Вот, собсно, пока все… -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 4] Author : freeman85 Date : 31-07-2008 19:03 [url=http://files.filefront.com/Shildt+Gerbert+C+rukovohrar/;11640794;/fileinfo.html]Герберт Шилдт. С++. Руководство для начинающих[/url] [url=http://depositfiles.com/ru/files/5575873]Стивен Прата. Язык программирования C++. Лекции и упражнения.[/url] [url=http://rapidshare.com/files/95686801/oop_v_cpp_samouchka.net_teraarhiv.ru.rar]Роберт Лафоре Объектно-ориентированное программирование в С++[/url] [url=http://rapidshare.com/files/98402615/Cplusplus.rar]Стенли Б. Липпман и Жози Лажойе. С++ Вводный курс[/url] :) Качаем... P.S.: Может тему прикрепить что бы вопросов не возникало? [size=1][i]freeman85 добавил [date]1217532096[/date]:[/i][/size] Надо бы посмотреть завтра, как качество на этих сканах. [size=1][i]freeman85 добавил [date]1217532289[/date]:[/i][/size] P.S.: поправил ссылки. [size=1][i]freeman85 добавил 04-09-2008-15-48(МСК):[/i][/size] Перезалил Герберт Шилдт. С++. Руководство для начинающих. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 5] Author : Arrowdodger Date : 02-08-2008 07:31 а книги по программированию под сурс есть? где описывается структура движка и т.п. неужели каждая команда кодеров, которая хотела сделать мод сама перерывала весь солюшен пока разбиралась в нем? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 6] Author : Segr Date : 02-08-2008 08:03 Тему прикрепил... Желательно в теме давать именно рекомендации о том что и где почитать -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 7] Author : KLIMaka Date : 02-08-2008 12:42 2 Arrowdodger Здесь все книги по сурсу [url]http://developer.valvesoftware.com/wiki/Books[/url] Как можешь заметить, ни одной книги об программировании под сурс там нет, увы. Разобраться во ВСЕМ движке - это дело непосильное. Модеры конкретно выделяют для себя те части, которые они решили модифицировать или внести что-то новое, и уже в этом направлении начинают копать. Попробую обрисовать некую общую структуру: 1 «Где вы это видели в оригинале?» Начинать нужно именно с этого вопроса. Сумбурные фантазии на тему «телепатического воздействия через стены» стоит отложить на то время, когда будет побольше опыта и понимания логики движка. Сначала стоит сосредоточится именно на модификации уже существующих возможностей. Например, вам захотелось модифицировать AR2 так, чтобы вместо шаров он пускал гранаты. Где гранаты в игре пускаются? Правильно, в СМЖ. 2 «Вы нашли, где это было в игре? Теперь стоит найти, где это место в коде» Да, это очень важно. Если в конкретном случае с гранатами все просто (идем и смотрим в weapon_smg1.cpp), это еще не значит, что так будет всегда. Например, где искать код, отвечающий за конвульсивно дергающиеся от электричества рагдоллы? Здесь нужно идти на первый этап, заметить, что такие рагдоллы остаются от убиенных мегафизкананом, и идти в weapon_physcannon.cpp. Но конкретно там, вы ничего не найдете! Только тщательно отслеживая цепь вызовов можно отследить то место, где создается этот дергающийся рагдолл. Как вы уже заметили, ничего, кроме знания языка вам здесь не поможет. Нужно знать когда, что, в какой последовательности выполняется. От точки, в которую вас привел первый пункт нужно двигаться сразу в двух направлениях: вниз - в функции, которые вызываЕт данный метод, и вверх – в функции, которые вызываЮт данный метод. Это помогает лучше понять механику обработки конкретного события, и дает общее представление об обработке событий вообще. 3 «От частного к общему» Теперь, кода вы проследили всю цепь действий, сопутствующих тому или иному событию, необходимо найти точку общности. Поясню это на примере. Вы хотите изменить вспышку от выстрела из пистолета. Можно идти в код пистолета, и в событии, которое соответствует выстрелу добавить кода (там дымок, или спрайтики каки-небудь). Но это всего лишь частный случай. Общим решением есть модификация DoMuzzleFlash(), которая централизованно обрабатывает все вспышки из всех стволов. Модификация и создание централизованной обработки схожих событий – очень важная деталь грамотного программирования, ибо локализует код и заметно упрощает его отладку и модифицирование. Но это не значит, что всегда стоит стремится к построению обобщенного кода, иногда задачи настолько малы и незначительны, что их эффективнее решать частным подходом. 4 «Документируйте!!!» Абсолютно все изменения, которые вы внесли в движок просто необходимо каким-либо образом помечать, и комментировать. Во-первых, если что-то пойдет не так, как вам хочется, вы сможете всегда найти все места, в которых вы что-то меняли (желательно в тех местах оставлять оригинальный код, чтобы при необходимости его восстановить) . Во-вторых вы просто можете банально забыть, для чего это делали, и что эта модификация привносит в общую картину. 5 «Отладка» Это, на ряду с проектированием, центральнейшее понятие программирования. Ведь нужно не просто писать код, нужно чтобы он работал, а главное – работал правильно. Это слишком обширная тема, поэтому я здесь дам лишь один совет: старайтесь отслеживать поведение своих модификаций. Для этого очень удобно использовать системные сообщения, которые уже в игре будут вас оповещать об процессе выполнения кода. И еще. Чтобы разобраться в сурсе, нужно под него писать. Никакая книга не заменит вам вашего личного опыта. И ежедневное чтение исходников дает такой же полезный эффект как чтение толкового словаря русского языка или какой-нибудь священной книги (Библия, Тора, Каран. Нужное подчеркнкть) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 8] Author : Megalan Date : 02-08-2008 18:26 самое лучшее это учится на чужом коде, проверенно)) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 9] Author : redbox Date : 04-09-2008 05:35 KLIMaka все понравилось, но если честно, пункт 4 порадовал :) и тут рождается вопрос-может можно как то в вижуал студии помечать измененные файлы? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 10] Author : KLIMaka Date : 04-09-2008 09:10 Ну вот на собственном опыте этот 4й пункт мне сэкономил уйму времени и миллиарды нервных клеток при переносе кода с 2006 СДК на ОВ. Ибо произошло такое, что я всеже забыл откоментить одно изменение и потом с пеной у рта на протяжении двух часов пытался судорожно вспомнить где же я это менял. Насчет вижуал студии... Я как-бы и не пытался именно средствами среды пользоватся, потому что для меня намного быстре и удобнее нажать Alt+F7 в Тоталкомандере и искать через него. Поэтому я оставлял лишь текстовые коменты и никаких закладок студийных не делал. Вот могу свой способ коментирования привести. //KLIMaka DBZ_WEAP_FIX 0006 31.08.08 Первое KLIMaka - имя редактора. Пока я один с кодом работаю, но вдруг случится такое что еще кто-то присоединится и чтобы различать чье это изменение. Второе DBZ_WEAP_FIX - класс изменения. Т.е. к чему относится это изменение. Очень удобно для локализации отдельных независимых изменений. Это для того чтобы можно было найти весь код, измененный для определенной цели. Например хочется отключить фишку с отдачей - ищим все вхождения DBZ_KICK и просто убираем этот код. Все легко и не нужно думать что ты отключишь чего-то лишнего или не все. Третье 0006 - Уникальный номер в пределах класса. Это для того чтобы не захламлять код длинными коментами а выносить их в отдельный файл и при надобности этот комент находить по его классу и номеру. Четвертое - 31.08.08. Дата создания/модификации. Для того чтобы знать когда этот код был в последний раз модифицирован. Если он модифицирован множество раз, то пищу несколько дат. Данный подход доказал собственую жизнеспособность и отвечает всем моим требованиям. Документировать легко, искать легко, переносить легко, контролировать легко :) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 11] Author : SlimeR Date : 23-02-2009 14:18 Ну допустим научился я програмировать на С++, и што дальше, как кодить то? Ведь структуры Сурса я не знаю :( -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 12] Author : freeman85 Date : 23-02-2009 14:59 [QUOTE][i]Оригинальное сообщение от SlimeR [/i] [B]Ну допустим научился я програмировать на С++, и што дальше, как кодить то? Ведь структуры Сурса я не знаю :( [/B][/QUOTE] Если умеешь программировать, ты поймёшь как устроен сорс...(не всё сразу =) ) Ещё можно поучиться на чужом коде, но на копипасте особо не научишься, надо понимать этот код... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 13] Author : SlimeR Date : 23-02-2009 15:45 [b]freeman85[/b], А есть где-нить учебник по кодингу на сурсе, где подробно рассмативается его структура ? З.Ы. Желательно на русском. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 14] Author : freeman85 Date : 23-02-2009 16:39 Тему прочитай хотя бы =^_^= Тыкаю конкретно пальцем [quote][i]KLIMaka[/i] Здесь все книги по сурсу [url]http://developer.valvesoftware.com/wiki/Books[/url] Как можешь заметить, ни одной книги об программировании под сурс там нет, увы. [/quote] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 15] Author : PNX Date : 23-04-2009 04:14 [b]Ален И. Голуб - Правила программирования на C и C++[/b] [url=http://rapidshare.com/files/71033401/pravila_programmirovaniya_na_c_i_cpp_samouchka.net_teraarhiv.ru.zip]здесь[/url] или [url=http://depositfiles.com/ru/files/2541329]здесь[/url] Рекомендую почитать скорее не начинающим, а приступающим к серьезному проекту. Книга читается довольно легко, особенно начало. Не во всем согласен с автором, но одно несомненно: очень полезная книга. В частности, для понимания некоторых вещей в коде Source. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 16] Author : KLIMaka Date : 26-04-2009 16:37 Книга просто шикарная, но известна она больше под названием "Веревка достаточной длинны, чтобы... выстрелить себе в ногу" )) Юмора Голубу не занимать -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 17] Author : pavlenko7179 Date : 18-05-2009 16:43 люди помогите пожалуста! я хочу сделать мод, но я ничего в этом не понимаю. не могли бы вы дать мне тутор на русском по моддингу (для чайников) п о ж а л у с т а -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 18] Author : Veteran777 Date : 18-07-2009 14:41 а у меня такой вопрос.можно прямо сразу начинать с С++ или сначала с С а потом С++? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 19] Author : KLIMaka Date : 18-07-2009 15:50 Лучше, конечно, с С++ начинать, ибо С тебе по существу ничего не даст. После С++ не возникнет никаких проблем с пониманием С (если вообще в этом потребность возникнет). А вот с С переходить на С++ будет гораздо сложнее. Но, безусловно, С намного проще С++, и если опыта в программировании вообще нет, и С++ слишком туго идет, то можно и С сначала бегло просмотреть. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 20] Author : Veteran777 Date : 18-07-2009 15:52 да я начал читать С++.пока все понимаю))спасибо за совет -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 21] Author : Veteran777 Date : 10-08-2009 15:25 возник небольшой вопрос.я вот прохожу С++ по книге и там есть разные примеры программ. Но в интернете я видел там немного подругому,ну например в моей книге [QUOTE] #include main() { cout << "Hello,world!" < int main() { std::cout << "Hello, world!" << std::endl; } [/QUOTE] почему так? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 22] Author : Alf-Life II Date : 10-08-2009 15:31 Разные версии, разные спопобы. 2005 ругается на , 2008 пережёвывает. У меня дома стоит 2005, а в институте учат на 2008, и я постоянно так накалываюсь. А в первом примере не указано стандартное пространство имён:) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 23] Author : Veteran777 Date : 10-08-2009 15:35 первая помоему ANSI версия а вторая другая.так что теперь мне делать?у меня на ПК и 2005 студия и 2008. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 24] Author : KLIMaka Date : 10-08-2009 15:53 Видать книга старовата... Дело в том, что первый пример - это программа на "достандартном С++". До 98 года, когда был принят стандарт на С++, использовался заголовочный файл iostream.h, но после принятия стандарта этот файл был отмечен как "не рекомендованный" (т.е. стандарт не распространяет никаких гарантий на этот файл, он может быть, а может и не быть). В замену этому файлу в стандарт был включен файл iostream, который содержал в себе все объявления связанные потоками ввода/вывода, к тому же эти объявления были помещены в пространство имен std. Это все я к тому, что первый участок кода по-существу является кодом "достандартным", и хоть и будет работать на большинстве компиляторов, но никаких гарантий на этот код не распространяется, и если вдруг в один прекрасный момент этот код компилироваться перестанет, пенять прийдется только лишь на себя. Второй участок - код соответсвующий стандарту C++98, и любой компилятор, поддерживающий этот стандарт просто обязан этот код компилировать. Насичет префикса std:: - это явная квалификация пространства имен, ибо, как я уже говорил, все объявления стандартной библиотеки помещены в пространство имен std. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 25] Author : Veteran777 Date : 10-08-2009 15:55 это мне теперь другой учебник искать чтоли??? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 26] Author : KLIMaka Date : 10-08-2009 15:59 Да, конечно, желательно учить по новейшему учебнику. Идеал, конечно - Бьярн Страуструп "Язык программирования С++. 3е издание". Эта книга написана автором языка и содержит исчерпывающую информацию о всех аспектах С++. Но часто начинающим она сложной кажется. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 27] Author : Veteran777 Date : 10-08-2009 16:02 я попопробую.мозги есть,так что попробую.вовремя остановили.ту книгу которую я читал там около 1100 страниц!!! P.S. а можно ссылочку а то чот найти не могу.или выложите если есть -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 28] Author : KLIMaka Date : 10-08-2009 16:24 Ну вот, читайте на здоровье )) [url]http://narod.ru/disk/11835838000/%D0%A1%D1%82%D1%80%D0%B0%D1%83%D1%81%D1%82%D1%80%D1%83%D0%BF%20%D0%91.%20%D0%AF%D0%B7%D1%8B%D0%BA%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D0%A1%2B%2B.%20%D0%A1%D0%BF%D0%B5%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5%20%D0%B8%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%2C%203-%D0%B8%D0%B7%D0%B4.%20%D0%91%D0%B8%D0%BD.html[/url] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 29] Author : Veteran777 Date : 10-08-2009 16:33 огромное спасибо!:) [size=1][i]Veteran777 добавил [date]1249919084[/date]:[/i][/size] а формат какой? [size=1][i]Veteran777 добавил [date]1249919556[/date]:[/i][/size] блин я уж испугался.это архив оказывается.кое как догадался в архив формат сделать -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 30] Author : Breever Date : 30-08-2009 08:01 Очень понравилась книга [b] C++ для "чайников" [/b] 5-е издание (предыдущие 4 вроде как базируются на знании Си, 5-е не требует их) По ней учить язык приятно и интересно, плюс хороший стиль изложения автора, рекомендую как раз начинать с нее (я сам недавно только начал заниматься кодингом, и после прочтения книги все стало намного легче :) ) Качаем [URL=http://www.libray.narod.ru/rapid/c_dlq_chainikov.htm]отсуда[/URL] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 31] Author : ={Hitmen}= Date : 30-10-2009 19:27 Спс, пригодится))) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 32] Author : Kobzon Date : 15-11-2011 17:20 Всем привет! У меня несколько вопросов: 1) Если начать на Visual basic 6.0, то смогу ли я продолжить на C++ 2) Я так понимаю C++ является частью Microsoft Visual Studio, так в этом самом студио еще помимо С++ есть еще всякие С#, F# и еще всякие си? Объясните в чем разница. (И кстати где скачать нормальную АНГЛИЙСКУЮ Studio?) 3) Хочу читать, понимать и править код Source, знаю что сначала будут иероглифы)), но с опытом надеюсь все придет, если не заброшу)), какая среда лучше подойдет? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 33] Author : KorDen Date : 15-11-2011 17:40 [QUOTE][i]Оригинальное сообщение от Kobzon [/i] [B]Всем привет! У меня несколько вопросов: 1) Если начать на Visual basic 6.0, то смогу ли я продолжить на C++ 2) Я так понимаю C++ является частью Microsoft Visual Studio, так в этом самом студио еще помимо С++ есть еще всякие С#, F# и еще всякие си? Объясните в чем разница. (И кстати где скачать нормальную АНГЛИЙСКУЮ Studio?) 3) Хочу читать, понимать и править код Source, знаю что сначала будут иероглифы)), но с опытом надеюсь все придет, если не заброшу)), какая среда лучше подойдет? [/B][/QUOTE] 1) Нет. ВО-первых проекты слишком разные. Или ты имеешь ввиду вначале научиться работать в бейсике а потом перебраться на C? ТОгда в принципе можно, но тогда лучше в бейсике только основы- мне например тяжело от некоторых пунктиков отвыкнуть... И во вторых под сорс как минимум 2005 студия, а я точно знаю по бейсику (про с не знаю), что у них очень много разного, даже в названиях и событиях 2) C++, C# и так далее - различные версии языка C, дополненные. Но база сохраняется. А visual C++ - это уже графическая реализация, имеется ввиду что уже идут формы винды и прочее. 3) Сам код сорса вроде изначально под 2005 студию, а с дургими у него проблемы (но вот под какую он изначально - точно сказать не могу, может быть и под 2008, но сомнительно) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 34] Author : manJak Date : 15-11-2011 17:50 1. Предварительное изучение любого языка перед переходом на С++ - вообще плохая идея)) В лучшем случае не приобретёшь ничего полезного, а в худшем - нахватаешься лишнего, что будет мешать писать на С++. 2. MSVS - интегрированная среда разработки, позволяющая производить полный или почти полный цикл разработки программы на ряде самых разных языков, в числе которых - С++. (И C++/C# - уж никак не [i]версии[/i] C, упаси боже. о_О Это три большие разницы.) 3. Проекты в SDK - под 2005, да. Но их можно без больших проблем конвертировать под более поздние. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 35] Author : Kobzon Date : 15-11-2011 18:04 manJak т.е. если освою c++ 2010, то проблем быть не должно? и еще, где можно скачать АНГЛИЙСКУЮ версию, на rutrackere нету, на канете тоже, русскую качать не хочу! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 36] Author : Stone Date : 15-11-2011 18:44 С microsoft.com, не? )) Можно обойтись вполне себе легальным Express-едишн, тут только коллеги должны подсказать полный набор тех SDK, которые нужно собрать воедино, чтобы все было зашибись. Кстати помнится еще под 2003 студию были проекты. Да и вообще движок никак не может писаться "под студию". Можно вообще без ее участия собирать исходники.. Другое дело что она действительно удобна, хотя и далеко не во всем :) [quote]2) C++, C# и так далее - различные версии языка C, дополненные. Но база сохраняется.[/quote] Сначала хотел расстрелять за это, но после Маньяка не буду этого делать :) Лучше посоветую, если есть такие знатные пробелы, вовремя их залатать, чтобы больше не позориться :) Думаю даже странички на википедии хватит, чтобы составить некоторое представления об этих языках, потому что кроме как C и C++ остальных роднит только буква, означающая C-подобный синтаксис. Но уж ни о какой "сохраняющейся базе" не может быть и речи. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 37] Author : manJak Date : 15-11-2011 19:41 > если освою c++ 2010, то проблем быть не должно? Проблемы будут, но решаемые) Если хочется совсем без проблем, то ищи полную версию 2005-й студии в интернетах. :) Альтернативно - бери свободноскачиваемую 2005 Express у мелкософта, а потом устанавливай Platform SDK отдельно (в полной версии он в комплекте). > движок никак не может писаться "под студию" Ну, это в идеальном мире было бы так)) На деле всегда есть компиляторозависимые фичи/баги/расхождения в имплементации стандарта, и разные версии MSVC тут не исключение) Например, компиляция игровых библиотек из SDK сорса под 2008/2010 студиями (компиляторы - MSVC9/MSVC10 соответственно), по-моему, не прокатывает без правки кода. И готовенькие настроенные проекты там лежат именно под студию 2005. А 2003 уже, вроде, совсем выпилили (хотя, может, ещё под сорс2006 остались). [size=1][i]manJak добавил [date]1321382689[/date]:[/i][/size] И вообще.. > c++ 2010 2010 - это версия студии, к языку она отношения никакого не имеет. Изучать тебе надо С++. Просто С++. [size=1]Хотя, у языка тоже есть "версии". :D C++98, C++03 и C++11, но тебя это сейчас волновать не должно)[/size] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 38] Author : Stone Date : 15-11-2011 21:15 [quote]> движок никак не может писаться "под студию" Ну, это в идеальном мире было бы так)) На деле всегда есть компиляторозависимые фичи/баги/расхождения в имплементации стандарта, и разные версии MSVC тут не исключение) Например, компиляция игровых библиотек из SDK сорса под 2008/2010 студиями (компиляторы - MSVC9/MSVC10 соответственно), по-моему, не прокатывает без правки кода. И готовенькие настроенные проекты там лежат именно под студию 2005. А 2003 уже, вроде, совсем выпилили (хотя, может, ещё под сорс2006 остались).[/quote] Тогда уж под компилятор :) Ну да пофигу, это уже словоблудие.. Фичи юзаются, но это опять же не цель, а средство. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 39] Author : KorDen Date : 16-11-2011 08:02 [QUOTE][i]Оригинальное сообщение от Kobzon [/i] [B]manJak т.е. если освою c++ 2010, то проблем быть не должно? и еще, где можно скачать АНГЛИЙСКУЮ версию, на rutrackere нету, на канете тоже, русскую качать не хочу! [/B][/QUOTE] Ты случаем не студент? И учишься случаем не в техническом вузе? А то есть такая интресная штука как [url=http://www.dreamspark.ru/]Dreamspark[/url] - а там и 2008 и 2010 и английский, и русский и много чего еще вкусного -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 40] Author : manJak Date : 16-11-2011 09:50 > Тогда уж под компилятор :) Нуу.. студия сильно к компилятору привязана.. так что какбэ вот как-то так.. ) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 41] Author : Kobzon Date : 20-11-2011 20:07 Нашел Microsoft visual studio 2010, открыл и похудел, там СТОКА всего что просто пипец. Чем больше кликаю в visual studio, тем больше люблю basic))) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 42] Author : Eppaljeck Date : 18-05-2013 21:38 Как изменить default_fov на 90 по умолчанию? Везде в коде ставлю значение 90, при старте игры оно 90, а при старте карты сбрасывается снова на 75. Пробовал чистить конфиги, непомогло. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 43] Author : Sanek_plkv Date : 18-05-2013 22:08 Прямо в GetDefaultFOV и пропиши хардкодом. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 44] Author : Eppaljeck Date : 18-05-2013 22:32 А какой конкретный файл? Он много где упоминается. И еще вопрос, можно реализовать что то вроде MOVETYPE_FLY? Т.е. посути это тотже ноклип, только с колизией уровня. Ака игрок летает по карте и не может вылететь за её пределы. Где вообще прописаны моветипы в сорсе? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 45] Author : Sanek_plkv Date : 19-05-2013 09:32 Если пользуешься студией - интеллисенс всегда к твоим услугам, пкм по любому упоминанию -> Go To Definition. Если нет - поиск по файлам по "::GetDefaultFOV" приведет тебя к определению. Логика движения игрока описана в CGameMovement. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 46] Author : Eppaljeck Date : 19-05-2013 10:55 Спасибо. Еще вопросы - как ограничить просмотр камеры снизу? Дело в том что у меня вид от третьего лица, и если смотреть вверх то камера проваливается в модельку игрока, что выглядит довольно мерзко. Так же добавить тень от модельки игрока, где она прописана у монстров (делал по этому тутору, если что [url]https://developer.valvesoftware.com/wiki/Fixing_the_player_animation_state_(Single_Player)[/url])? Как убрать звуки шагов под водой (и вообще нет анимации ACT_SWIM), даже когда игрок плывёт, слышно топание :(. Такое ощущение что он ходит, а не плавает под водой. Хочу научить игрока летать, предположительно заменив duck (приседание) на моветип воды, где происходит их вызов? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 47] Author : Sanek_plkv Date : 19-05-2013 14:59 Ты так далеко не уедешь, учись искать по коду. Углы камеры рассчитываются в CInput::ApplyMouse. Тень отключена флагом EF_NOSHADOW в методе Spawn энтайти-игрока. Звуки шагов скорее всего издает модель игрока, своими ивентами. Полеты, плавание, приседания - все в CGameMovement. Собственно, методы Duck и WaterMove. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 48] Author : Eppaljeck Date : 19-05-2013 16:03 Sanek_plkv Благодарю конечно, поиск я использую. Но меня волнует не только как найти. Кодер из меня мягко говоря новичек, скорее копипастер. [i]Тень отключена флагом EF_NOSHADOW в методе Spawn энтайти-игрока.[/i] Я закомментировал в CBasePlayer::Spawn: [code] // only preserve the shadow flag /*int effects = GetEffects() & EF_NOSHADOW; SetEffects( effects | EF_NOINTERP );*/ [/code] Недало никаких эффектов. Пробовал также безрезультатно кормить ему другие флаги, типа EF_NOINTERP, тень не появилась. ЧЯДНТ? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 49] Author : Sanek_plkv Date : 19-05-2013 18:15 [QUOTE][i]Оригинальное сообщение от Eppaljeck [/i] Я закомментировал в CBasePlayer::Spawn: // only preserve the shadow flag /*int effects = GetEffects() & EF_NOSHADOW; SetEffects( effects | EF_NOINTERP );*/ [/QUOTE] Код большинства объектов в играх на source состоит из двух частей - серверной и клиентской. Ты закомментировал код в серверной части. В клиентской части (класс C_BasePlayer) тоже есть метод Spawn и там тоже устанавливается этот флаг. Попробуй убрать его еще там - как правило, именно клиентская часть отвечает за логику, связанную с графоном. По поводу углов камеры - они рассчитываются в методе CInput::ApplyMouse. Рассчитываются две части - углы pitch (полярный угол) и yaw (азимутальный). Тебя интересует угол pitch, а конкретно необходимо ограничить значение pitch каким-то нужным тебе максимальным углом (градусов 60 наверное). По поводу переделывания приседания в полет - тут довольно многое нужно переделать. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 50] Author : Eppaljeck Date : 19-05-2013 18:44 Sanek_plkv [i]В клиентской части (класс C_BasePlayer) тоже есть метод Spawn[/i] Да я нашел его, и тоже коментировал и пробовал заменить на другие флаги (синхронно с сервером). Но результата оно недало. [size=1][i]Eppaljeck добавил [date]1368985968[/date]:[/i][/size] [i]по поводу углов камеры - они рассчитываются в методе CInput::ApplyMouse.[/i] [code]// use the mouse to orbit the camera around the player, and update the idealAngle m_vecCameraOffset[ PITCH ] += m_pitch->GetFloat() * mouse_y; cam_idealpitch.SetValue( m_vecCameraOffset[ PITCH ] - viewangles[ PITCH ] ); и ConVar_ServerBounded *m_pitch = &cvar_m_pitch; [/code] Каким образом это можно сделать? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 51] Author : Sanek_plkv Date : 19-05-2013 21:41 [QUOTE][i]Оригинальное сообщение от Eppaljeck [/i] [B]Sanek_plkv Да я нашел его, и тоже коментировал и пробовал заменить на другие флаги (синхронно с сервером). Но результата оно недало.[/B][/QUOTE] Попробуй явно убрать флаг: RemoveEffects(EF_NOSHADOW); [quote]Каким образом это можно сделать?[/quote] Там оказывается все уже сделали: [code] if (viewangles[PITCH] < -cl_pitchup.GetFloat()) { viewangles[PITCH] = -cl_pitchup.GetFloat(); } [/code] Просто задай в конвар cl_pitchup требуемый угол. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 52] Author : Eppaljeck Date : 19-05-2013 22:17 Sanek_plkv [i]Попробуй явно убрать флаг: RemoveEffects(EF_NOSHADOW);[/i] Сожалею, но тени не появилось :(. Видимо не там ковыряем. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 53] Author : Sanek_plkv Date : 19-05-2013 23:25 [QUOTE][i]Оригинальное сообщение от Eppaljeck [/i] [B] Видимо не там ковыряем. [/B][/QUOTE] Действительно. В методе ShadowCastType() класса C_BasePlayer поменяй возвращаемое значение на SHADOWS_RENDER_TO_TEXTURE_DYNAMIC. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 54] Author : Eppaljeck Date : 20-05-2013 18:55 Спасибо! Тень появилась, кроме 1ой карты, я понятия неимею что с ней, ну да ладно. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 55] Author : Eppaljeck Date : 20-05-2013 19:43 Вот эта злополучная карта: [url]http://rghost.ru/46142310[/url] Делал не я, просто для тестов. Интересно почему на ней не рисуются тени? На остальных рисуются, а на этой нет. [size=1][i]Eppaljeck добавил [date]1369079076[/date]:[/i][/size] Можно ли адаптировать NPC модель под игрока? Она подходит почти идеально, единственный минус - почему то при большей части углов - её ориентирует рывками в одну и туже сторону. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 56] Author : Eppaljeck Date : 28-05-2013 17:52 Какой параметр у энтитей отвечает за то чтобы она бросала тень от фонарика и env_projectctedtexture? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 57] Author : naskof300 Date : 23-11-2013 08:29 Помогите плз. Пытался скомпилить код, но выдает ошибку(код не мой, и в кодинге я практически не разбираюсь); cpp: [url]http://rghost.ru/50374198[/url] h: [url]http://rghost.ru/50374213[/url] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 58] Author : Barnacle Date : 23-11-2013 08:52 [b]naskof300[/b], по какому принципу в отдельном файле нужно ошибку искать? Я всегда думал, что проще по логу определить. :rolleyes: -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 59] Author : naskof300 Date : 23-11-2013 11:22 Вот компила лог: [code]// 1>------ Build started: Project: Client Episodic, Configuration: Release Win32 ------ 2>------ Build started: Project: Server Episodic, Configuration: Release Win32 ------ 1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(D:\cremation\src\game\client\.\Release_episodic\Client Episodic.dll) does not match the Linker's OutputFile property value (D:\cremation\src\game\client\Release_episodic\Client.dll). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile). 1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(992,5): warning MSB8012: TargetName(Client Episodic) does not match the Linker's OutputFile property value (Client). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile). 1> client_episodic-2005.vcxproj -> D:\cremation\src\game\client\.\Release_episodic\Client Episodic.dll 1> Скопировано файлов: 1. 2> npc_cremator.cpp 2>d:\cremation\src\game\server\npc_cremator.h(485): error C2660: 'FireSystem_StartFire' : function does not take 8 arguments 2>npc_cremator.cpp(753): warning C4551: function call missing argument list ========== Build: 1 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== [/code] В общем то ошибка в этой строчке кода: if( firetrace.fraction != 1.0 ) { FireSystem_StartFire( firetrace.endpos, scale, growth, 4.0, 15.0f, (SF_FIRE_START_ON|SF_FIRE_START_FULL), (CBaseEntity*) this, FIRE_NATURAL ); } Исправить можно, удалив все что в скобках, после FireSystem_StartFire, но в таком случае нужные мне партиклы огня в игре не отображаются. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 60] Author : Barnacle Date : 23-11-2013 12:46 По-моему это очевидно. Function does not take 8 arguments - функция не принимает 8 аргументов. Открой её определение и посчитай сколько там аргументов... их 7. Кто так криво редактировал, что забыл убрать то ли 4.0, то ли 15.0f? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 61] Author : naskof300 Date : 23-11-2013 13:03 Хм... Код исправил, но партиклы по прежнему не отображаются; в консоли пишет: nsorted: C_OP_RenderSprites::RenderUnsorted: Attempting to use an unimplemented sprite renderer for system "flamethrower"! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 62] Author : Barnacle Date : 23-11-2013 13:37 Похоже на отсутствие нужного pcf или типа того. Откуда этот код дёрнут? Похоже, что не до конца всё необходимое додёрнуто. В любом случае в tf2 должен быть "flamethrower.pcf". -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 63] Author : tnk500 Date : 25-11-2013 06:17 Читаю "С++ для чайников" Стефана Дэвиса, все понятно, но качество вырвиглазное (читаю на ipad; ошибки можно увидеть на фото). Дайте ссылку на нормальный pdf или epub [url]http://firepic.org/?v=4.2013-11-25_5p1231jk9r82.jpg[/url] [url]http://firepic.org/?v=4.2013-11-25_6qopiqhmlb6w.jpg[/url] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 64] Author : Джазан Date : 08-01-2022 23:11 Все проблема решена. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- The messages has been download from Форумы на Наша-Life at https://bbs.hl-inside.ru at 28.03.2024 06:34:03