Згорнути %s Последние сообщения тем
Тема | Форум | Написано | Дата |
---|---|---|---|
|
|
Мододелу-чайнику
Створив:
Vergas
, 10 гру 2008 07:19
Повідомлень у темі: 3
#1
Надіслано 10 грудень 2008 - 07:19
Ко мне часто обращаются с вопросами разъяснить довольно тривиальные вещи. Это раз. Второе, это то, что очень часто слышны сетования, что мол сам бы сделал, но совершенно не представляю, как.
Вот мне и подумалось открыть такую тему, где в виде отдельных статей и пояснений к ним(ответов на вопросы) собрать по крупицам все знания наших мододелов. Еще древнегреческий филосов Сенека говорил: "Я знаю, что ничего не знаю". Так и у нас. Каждый знает что-то. Но всего, наверняка нет. Так давайте делиться знаниями!
теперь об организации темы. Золотое правило: один пост - одна статья. Вопросы задаем в отдельных постах. Но потом автор статьи в своем посте добавляет заданный вопрос и пишет на него ответ. Получив ответ, задавший свой пост с вопросом удаляет. теким способом мы и посты пладить не будем, и разбираться в материалах темы будет проще.
И последнее. Обращаюсь к авторам статей. Поверте моему довольно значительному преподавательскому опыту: очень часто бывает так, что человек блестяще разбирается в неком вопросе, но донести свои знания до других просто не может, а вернее не умеет. Поэтому я беру на себя функции некой редактуры. Присылайте мне в личку ваши опусы. Я их просмотрю, может быть подправлю, а потом верну вам. Вот после этого можно и вставлять статью в тему. Помните об одном: чем меньше вам задали вопросов по вашей статье, тем лучьше и объемнее она написана. Если вы заметили какие-то неточности или неверные высказывания в статьях, пишите авторам в личку - он поправит. Не надо с восторгом романтичного вьюноши кричать об этом на всю ивановскую.
Будте взрослее в поступках и помыслах.
Вот мне и подумалось открыть такую тему, где в виде отдельных статей и пояснений к ним(ответов на вопросы) собрать по крупицам все знания наших мододелов. Еще древнегреческий филосов Сенека говорил: "Я знаю, что ничего не знаю". Так и у нас. Каждый знает что-то. Но всего, наверняка нет. Так давайте делиться знаниями!
теперь об организации темы. Золотое правило: один пост - одна статья. Вопросы задаем в отдельных постах. Но потом автор статьи в своем посте добавляет заданный вопрос и пишет на него ответ. Получив ответ, задавший свой пост с вопросом удаляет. теким способом мы и посты пладить не будем, и разбираться в материалах темы будет проще.
И последнее. Обращаюсь к авторам статей. Поверте моему довольно значительному преподавательскому опыту: очень часто бывает так, что человек блестяще разбирается в неком вопросе, но донести свои знания до других просто не может, а вернее не умеет. Поэтому я беру на себя функции некой редактуры. Присылайте мне в личку ваши опусы. Я их просмотрю, может быть подправлю, а потом верну вам. Вот после этого можно и вставлять статью в тему. Помните об одном: чем меньше вам задали вопросов по вашей статье, тем лучьше и объемнее она написана. Если вы заметили какие-то неточности или неверные высказывания в статьях, пишите авторам в личку - он поправит. Не надо с восторгом романтичного вьюноши кричать об этом на всю ивановскую.
Будте взрослее в поступках и помыслах.
#2
Надіслано 10 грудень 2008 - 11:37
Экран,зерно,пиксел.
Давайте разберемся что же такое экран монитора с точки зрения программиста. Экран - это некая прямоугольная матрица состоящая из плотных рядов неких точек, называемых пикселями. У каждого монитора количество таких точек различное как по горизонтали, так и по вертикали. И вот от их совокупного количества и зависит разрешение монитора. Чем больше общее количество точек - тем разрешение лучше.
Вот как понятие пикселя трактует вики. Ткни сюда и прочитаешь
Ну как, все понятно? Вряд ли. Попробую объяснить попроще. Пусть у нас есть условный экран у которого по горизонтали
в ряд располагается 100 точек. А по вертикали имеем 80 таких рядов. То есть получаем в совокупности 100*80= 8000 точек. Это у экрана, так на заводе сделали. И как бы мы не изголялись, больше чем эти 8000 точек, мы ни при каких условиях не получим.Но меньше можем. Заставим каждые 4 точки(квадратик 2х2) светиться как одна,одним цветом. Получили, что горизонтально поместилось 100/4=25 точек, а вертикально 80/4=20 точек.Вот вам новое разрешение! Было 100х80, стало 25х20.Точка экрана стала в четыре раза больше, но а количество их 20*25=500 стало аж 16 раз меньше (8000/500=16).
Так вот, одну точечку экрана, как завод прописал, назовем "зерном". А объединение нескольких таких зерен в одно целое - пикселем.
Кстати понятие зерна очень важно при покупке монитора.Если у вас на выбор два монитора одинаковых размеров, то берите тот, у которого зерно меньше. Получите в результате более четкое изображение.
Когда мы в игре меняем разрешение, собственно мы меняем количество пикселей. Почему сделав разрешение менее четким, увеличиваем скорость игры? Да потому, что количество пикселей уменьшилось и при их обработке видиокартой и процессором напрягаться последним приходится гораздо меньше.(Сравните по примеру: Запоминать и обрабатывать 8000 пикселей или 500).
И напоследок про панарамные (широкоформатные) мониторы. Если у обычных мониторов количество зерен по горизонтали и вертикали приблизительно одинаковое, то у этих явно - нет! Игра изначально заточена под обычный монитор.Пиксель соответственно строится как квадратик из зерен. И изменяя размер пикселя по горизонтали и вертикали, мы практически не меняем пропорций экрана. Каким было отношение (в пикселях) ширины к длинне, таким и осталось. А у широкоформатника ширина экрана гораздо больше, чем длина. Вот поэтому меняя разрешение по правилам для обычных мониторов мы нарушаем пропорции. Вот изображение и разъехалось.
Следовательно этим мониторам нужны совершенно другие правила вывода изображения...
#3
Надіслано 22 грудень 2008 - 04:22
Популярне повідомлення!
КООРДИНАТЫ В СТАЛКЕРЕ
Разберемся с системой координат в Сталкере.
Для начала определение из Вики.Это чтобы освежить знания, полученные в 6 классе.
Итак, в Сталкере используется самая обычная прямоугольная Декартова система координат. Но со своей спецификой.
Расположение осей и начала координат, совершенно не такие, как мы привыкли их рисовать в средней школе.
Во-первых, начало координат расположено в верхнем левом углу экрана.
Во-вторых, ось Ох расположена горизонтально, и направлена слева - направо.
В-третьих, ось Оу расположена вертикально и напрвлена сверху - вниз.
То есть, как-то так:
О--------->х
|
|
|
|
\|/
y
У осей есть и "отрицательные" половинки, но они нам не интересны, так-как объект с отрицательными координатами
на экране не виден. Эту систему координат назовем аблолютной системой координат Сталка. Любой объект, который мы видим на экране есть ни что иное, как прямоугольник с натянутой на него некой текстурой.Чтобы однозначно задать положение этого прямоугольника на экране, достаточно задать координаты его верхнего левого угла, длину и ширину.
И все! Остальное все сделает программа.
Пример такой конструкции:
<compass x="32" y="27" width="8" height="8" heading="1"> <texture>ui\ui_hud_map_arrow</texture> </compass>Здесь про "х" и "у" объяснять, надеюсь не надо.
width - длина прямоугольника по горизонтали
height- ширина прямоугольника по вертикали.
heading - про это не здесь и не сейчас.
В этой конструкции задается тот компас, который постоянно вертится у нас на мини-карте.
Кроме абсолютной системы координат, в Сталкере существует ещё и относительная система.
Что это такое?
Представте себе, что вы, как программист, расположили на экране( в верхнем левом углу) один большой рямоугольник "А",
а на нем кучу маленьких прямоугольничков от "Б" до "Я", каждый раз долго и нудно расчитывая для них координаты на бумажке. Сохранили все и запустили программу. Оценили увиденное и решили,что в нижнем правом углу экрана ваш прямоугольник будет смотреться гораздо лучше.Снова залезли в листинг своей проги. И тут с ужасом начинаете понимать, что всю эту работу по рассчету координат каждого прямоугольничка нужно будет повторить. Громко вспомнив все слова, за которые вас мама била по губам в детстве, изорвав всю исписанную бумагу, плюнув в монитор, уходите на кухню пить пиво и нервно курить. После второй баночки, вам левый верхний угол экрана кажется самым удобным и родным... Но тут прихожу я, как мистер Мускул, и рассказываю про относительную систему координат.
Итак, вы прописали большой прямоугольник "А" и неким образом дали понять программе(как - об этом в другой раз), что левый верхний угол прямоугольника "А" теперь является началом новой системы координат, и все остальные прямомоугольнички задаете в это новой ОТНОСИТЕЛЬНОЙ системе. Теперь вся эта мелочь привязана ни к левому верхнему углу экрана, а к прямоугольнику "А". И теперь, стоит только вам сменить координаты у "А", как и все остальные сами потянутся за ним, как утята за уткой.
Двигать теперь вашу конструкцию по экрану - одно удовольствие. Поменял "х" и "у" у "А" и сиди наслаждайся.
Незнание этих систем и приводит к тому, что изменяя на определенную величину координаты подложки худа патронов, вы на столько же меняете и координаты иконки и подписи. А в результате подложка в одном месте, а все остальное...хорошо, если ещё на экране. А то мне частенько пишут, мол поменял координаты, а оно совсем изчезло!!!Да не исчезло, дружок, а просто вылезло за приделы экрана.
Вот вкратце и все, что хотелось сообщить. Пока тайна и для меня, каким образом определяется размер экрана в точках.
Если кто в курсе - пишите. А пока, только великий и могучий МЕТОД ТЫКА вам в помощь!
#4
Надіслано 22 грудень 2008 - 23:44
ПРАВИЛО О.Р.С.
Учили меня программированию в одна тысяча девятьсот лохматом году.Так давно,что уже и не помню когда. Но главное правило Советского программиста я помню чётко: О.Р.С.
Современные программеры обычно или забывают про него или вообще не знают.А зря.Сколько проблем снимает это правило в процессе написания и отладки програм.
Итак, что же это такое О.Р.С. и с чем его едят...
О - откат.
Р - ремарка
С - структура.
Начнем с отката. Это совсем не то,о чем вы подумали в первый момент. Денег давать никому не надо! Под откатом понимаем возвращение к исходному состоянию.Проще понять на таком примере: Вы начинаете править файлик с не вашей программой. Правили, правили и доправили до такого состояния, что и прога не работает и вы ничего не понимаете ни в проге, ни в своих исправлениях.Вот тут вам и придет на помощь золотое правило программиста:
"ПРЕЖДЕ ЧЕМ ПРАВИТЬ ПОДУМАЙ, КАК БУДЕШЬ ОТЫГРЫВАТЬ НАЗАД!"
В начале работы вам обязательно нужно создать копию исходного файла.Обычно принято, что такая копия носит точно такое же имя, но другое расширение (как правило bak).
Например:
Исходный файл: ui_hud.script
Файл копия:ui_hud.script.bak
Такой способ очень удобен. Во-первых, вы обезопасили всю программу наличием копии курочиваемого файла. Во-вторых, эти два файлика всегда лежат рядышком (если конечно отсортированно по имени)и не надо копию долго искать.В-третьих,вы всегда легко определите, какие именно файлы вы правили (по наличию копий). И в-четвертых, после отладки и тестирования вам легко убрать файловый мусор, выбрав файлы для удаления по маске "*.bak"
Кроме этого,в случаях каких-то глобальных правок, рекомендуется на всякий случай сделать копию всех файлов программы.У меня на винте в директории Сталкера всегда есть две папочки:gamedata и gamedata.bak
Теперь о ремарках или, в простонародье, комментариях. Если вы пишите свою программу с нуля, то по-началу вам легко удается все держать в голове: Все переменные, предназначения всех функций, логику построения условий и т.д. Но чем больше листинг, тем труднее это делать. Можно конечно записывать, но бумажка может потеряться. да и сложно искать в своих записях причину введения какой-нибуть 38 локальной переменной... Поэтому не пренебрегайте ремарками в листинге программы!!!!!Посмотрите для примера два файлика
player_ogg.script и ui_cheat_player.script
В этих файлах практически ничего не осталось писаного до меня. так что можно считать, что я их с нуля писал. Посмотрите сколько там ремарок. И скажу вам по секрету, что после отладки, когда я вычищал листинг от мусара, я потер процентов 70 ремарок, которые были изначально.
У ремарок есть ещё одна функция. Мой учитель по программированию неустанно повторял своим ученикам: "Листинг программы должен быть откоменнитован так, что даже самый последний идиот поймет об чем здесь идет речь!".Сегодня я написал программу, завтра придет другой програмист и начнет её переделывать. Насколько ему будет проще, если я ему все в ремарках объясню...
Есть ещё несколько правил, по правке чужой программы.
1. Всегда выделяйте ремарками начало и конец вашей правки.
2.Внутри этого выделения обязательно должен находиться заремленный исходный текст и ваш новый.
Поправили кусок прграммы, запустили - не работает. Вам очень легко восстановить исходный текст, а потом уже анализируя и постепенно вводя ваши изменения, найти причину ошибки.
И последнее. Структурность листинга. По большому счету весь скрипт можно записать одной большой строкой. И он будет работать. Но читать этот листинг совершенно невозможно.Эту цель, наверное, и приследывали (как пример) авторы биорадара.Загляните в их скрипты. там как раз одна очень длинная строка. Зачем это сделано - непонятно. Чего они скрыть хотели?
Структура позволяет вам легко читать листинги, искать ошибки в процессе отладки. Да и сам процесс создания программы упрощается значительно.
Вот в кратце и все, что касается ПРАВИЛА О.Р.С.