Nevidim, нравится-не нравится, это сугубо субъективная оценка, которая никак не характеризует сам язык, мне наоборот, очень нравится. А по поводу проблем с производительностью, так вы возьмите любой компонентный фреймворк под плюсами, получите тот же букет проблем, и связан он вовсе не с языком реализации. На делфях вам никто не запрещает писать лоу левел код работающий ровно настолько быстро, насколько у вас прямые руки, и это будет не сложнее и не менее производительно, чем на тех же плюсах.
Лично мое мнение: такое предвзятое отношение к делфям сложилось из-за относительно низкого порога вхождения. Но не обманывайтесь, простота там только на поверхности. Вы ведь не будете утверждать, что c++ жутко прост по причине того что под него есть такой замечательный компонентный IDE-фреймворк как Builder?
Приведу еще более понятную аналогию: вы ведь не будете утверждать, что принтер очень просто устроен, на основании того, что для печати на нем вам достаточно нажать две кнопки? А вы попробуйте самостоятельно взять свой принтер и увеличить ширину печатающей области, переделать из чернобелого в цветной, добавить возможность параллельно печатать сразу на двух сторонах листа, а так же сливать статистику о печати в web, тогда и поговорим о простоте и кривости.
PS: И расскажите ка, какие у плюсов проблемы с производительностью? Обычно у плюсов исключительно проблемы с прокладкой между стулом и монитором, да черт возьми, это чуть ли не один из основополагающих моментов в плюсах, и в этом смысле, кстати, делфи у них выигрывают - предоставляя не меньше возможностей, спасают ноги программиста от шальных пуль, во многом благодаря именно своему "некрасивому синтаксису".
Качество кода вполне понятно, если учесть, что изначально редактор планировался как микротулза для своих нужд, для таких вещей совершенно бесполезно, если не сказать - вредно, разрабатывать архитектуру, заботиться о простоте поддержки и повторном использовании кода, результат не будет стоить вложенных усилий. Такие штуки обычно пишутся как некая крайне узкоспециализированная серебряная пуля для небольшой задачи, которую или а) жутко достало решать часто и вручную, или б) очень интересно попробовать автоматизировать в связи с тем, что ты это сделаешь на новом языке/с применением какой-то новой для себя технологии/с использованием какого-то нового инструментария. И вот в первом случае решение тебе, обычно, нужно не завтра и красиво, а сейчас и чтобы работало, а во втором случае ты играешься с новой игрушкой, и сделать все по уму сразу не шибко получается, первый блин, как говорится, комом. Вот при создании mdlvis у Алексея были одновременно оба случая, и, как планировалось, микротулза для насущных нужд (это потом уже, по запросам сообщества она разрослась в космолет, рефакторить который сложнее, чем переписать с нуля), и с 3D графикой он на тот момент не шибко был знаком, как сам писал в статье на хабре. Так что будьте снисходительнее.
PS: И да, Nevidim, обоснуй свой выпад в сторону делфей. Лично мое мнение - кривым он никогда не был, какое-то время был устаревшим, но сейчас Embarcadero все соки из себя жмет продолжая его разработку, и, честно говоря, поставив себе ради интереса Rad Studio XE2 я был весьма приятно удивлен количеством и качеством преобразований и нововведений (с 7-ки никаких делфей в глаза не видел), да и в продакшене процент присутствия написанных на делфи софтин только растет, так что я бы не был столь категоричен в высказываниях о их "кривости".
Какой-то странный у него Stand. Я попробовал так постоять с пол минуты, уже ноги заболели. Такая стойка характерна для пальцеходящих антропоморфов (дренеи, таурены, это если из тех, что в WoW), когда пятка висит воздухе и прилично смещена в сторону от оси опоры. С орком такая стойка (полусогнутые колени, стопы на 90 градусов, дальняя стопа на линии за ближней) как то не вяжется, постоянное напряжение в коленях и стопах, не то устройство ног, чтобы так стоять. Тут или оба колена разогнуть нужно, тогда ступни не двигаем (опора почти на пятки), или оставить согнутым одно колено (переднее (стойка-выпад, с опорой на согнутую ногу) или заднее (стойка-упор, с опорой, опять же, на согнутую ногу)) и несколько выдвинуть заднюю ступню в сторону, чтобы переместить пятку ближе к оси опоры.
"Программная инженерия" эт не на кодера, эт на полноценного разработчика.
Вот у нас в универе есть специальность "прикладная информатика", вот там именно кодеров учат, минимум матана, вмеру алгоритмов (общеюзабельные, т.е. не особо выходящие за рамки сортировок, сетевых задач и т.п.). Основной уклон дают там именно на изучение существующих средств, методов, приемов написания кода.
В принципе, сейчас рынок переполнен разработчиками при нехватке профессиональных реализаторов (кодеров). Так что вполне перспективное направление, если планируете работать в крупной компании.
Ну не скажу, что xgm был инициатором моего интереса к программированию, но одной из первых ступенек долгого, трудного, но увлекательного, интересного мне и, как оказалось, весьма прибыльного пути - это точно.
В данный момент работаю на себя, и не спешите сказать: "Еще один фрилансер.". Фриланс, это все же работа на дядю-заказчика. Опыт фриланса у меня есть, но он: a) небольшой; б) скорее негативный, чем позитивный.
Нет, фриланс не мой вариант, да и зачем? Если сейчас все еще тьма вариантов для программиста работать (и, что характерно, неплохо зарабатывать) на себя. Как и где? А вот об этом никто и никогда вам по своему желанию не скажет =) Пробуйте, ищите новые возможности, крутитесь в различных сферах, и у вас обязательно все получится.
Так что спасибо тебе, XGM, ты помогал мне быть тем, кем я был тогда, и, пусть только отчасти, но стать тем, кто я есть сейчас.
Ну не знаю, не знаю. Только что дешево и сердито.
Норм серваки нужно на VPS/VDS разворачивать, за 50$ в месяц можно подыскать очень даже гуд VPS с серверными окошками. И если онлайн пару сотен держать, то его и окупать можно на сателите под соответствующую игру.
GadenbIsh
элемент в красном кольце - я был бы рад возможности не проматывать километры вниз, высматривая заголовки, а просто напрямую увидеть такой вот списочек.
элемент в синем кольце - имхо "Карты (1) Новости (5) Статьи (1) Файлы (2) Проекты (1)" несколько информативные, чем "16 ресурсов". И не нужно говорить, что, мол, если нажать там, потом кликнуть тут и перейти вон туда, то придешь на страницу, где все еще информативнее.
Вот вам тоже графический ответец
(WRONG IMAGE URL - imageshack)
Давайте теперь назовем хабр унылым и переполненным излишествами г..ном, сверстанным криворукими бабуинами. А сами будем строить велосипеды с одной педалью, потому что второй вполне достаточно (хоть и не удобно), чтобы крутить колесо, которое, кстати, у нас тоже одно, и мы этим гордимся, потому что, как всем известно, времена двухколесных велосипедов прошли, а мы и сами с усами.
PS: Времена удобного и гармоничного интерфейса никогда не пройдут. А про СЕО я говорю потому, что для меня это профессионально близко, и я знаю, что белая внутренняя оптимизация под поисковики, в легких своих формах несущая пользу и для пользователей, в крайних своих формах начинает только мешать построению удобной среды обитания, коей и является любой сайт, а тем более такой как XGM.
GadenbIsh, грамотно сделанное дублирование навигации никогда не считалось дурным тоном, в т.ч. и в плане СЕО, те же бреадкрамбсы гугл просто обожает, если их понатыкать вверху, в подвале, а то еще и в сайдбаре аналог. Да, не стоит навигацией перегружать страницу, если на ней пол строки текста, но это не про XGM.
А в плане визуального комфорта, вверх просится хоть какой-то акцентный крупный элемент, а то глазу не за что цепляться, он сразу соскальзывает в гущу текста, что оставляет весьма неприятное ощущение, что ты не на сайте, а в RSS ленте какой-то.
По поводу одинакового контента, так я же написал, сделать шапку, и в, например, darkplatinum-е поставить для нее display:none.
Ладно, это все исключительно моё имхо, просто вы приводите странные доводы о жуткой сложности реализации всего этого, при том, что оно проще некуда. Скажите прямо: "Мне эта шапка его не нравится", - или: "И так убили кучу сил, делать эту шапку просто не хочу". Единственный более-менее нормальный прозвучавший довод, так это по поводу дублирования элементов, но даже оно в плане СЕО не является проблемой при наличии хоть каких бы то ни было количеств другого контента на странице, а визуально обходится все тем же великострадальным display:none у соответствующих элементов.
Эмм, так а в чем проблема? Чем display:none столь дурно пахнет? Забабахать шапку, и во всех скинах кроме StormTech-а убрать её видимость. В плане SEO сделать стилем по умолчанию чтобы отдавало StormTech-евский стиль, по правилам гугла такой вот хайд при смене стиля - не клоакинг. Тем более, что там в шапке кроме навигации контента минимум.
В дарк-платинуме есть минимализм как в плане стилистическом, так и в плане размеров элементов, поэтому небольшая шапка в нем смотрелась и смотрится вполне адекватно.
StormTech куда витиеватее и крупнее в плане элементов, поэтому минималистичная шапка в нем ну совершенно не достаточна. При входе на страницу возникает ощущение, что ты уже прокрутил её на пару сотен пикселей вниз.
Изначальный вариант однозначно в этом плане рулит и разруливает. Можно поподробнее, почему пришлось отказаться от функциональной шапки исходного варианта?
Один важный плюс второго варианта (хотя по его описанию в этой статье новички вообще не поймут о чем речь) заключается в том, что при компиляции все поверхности, которые недосягаемы изнутри карты не будут просчитаны. Учитывая ограничения на количество полигонов на карте при расчете теней и т.п. это архиважно. Так же немаловажно, что если вы и впишетесь по количеству полигонов при первом варианте (например залив все внешние стороны стен карты тем же скаем) то игра все равно будет обсчитывать на порядок больше полигонов в каждой конкретной точке карты. Эта проблема решаема хинт брашами, но оно вам надо? Так что проще (лучше, в 100500 раз правильнее) сделать грамотное небо в виде замыкания областей (второй вариант) чем иметь кучу неприятностей с первым вариантом.
Вот вам пример/наработка, как можно делать статические блики. Тут, конечно, много ограничений в использовании есть, но при правильном месте произростания рук может быть неплохо применено.
reALien, заметишь и в 1.39с в режиме "Поверхность". Так что убирай строку, а то даешь вредный совет новичкам, в плане лишний раз использовать левую версию мдлвиса. Учитывая что между 1.39с и 1.40 Алексей перерабатывал алгоритм сохранения/загрузки моделей, то лишний раз открывать/сохранять в разных версиях я бы не рекомендовал.
Хммм, сейчас придумал еще одну фишку, как сделать блик ну прям ну очень реалистичный, т.е. вплоть до скольжения по поверхности во время перемещения объекта или камеры. Сделаю наработочку и выложу. Возможно даже статью напишу.
Сказочник, ну я не думаю что Алексей заморачивался с оптимальными алгоритмами поиска и т.п. Т.е. скорее всего, они будут выделены в том порядке, в котором они перечислены в памяти, и тут тоже даю 98% вероятность того, что в памяти они размещены в том же порядке, что и в модели.
Т.е. сохрани модель в mdl и найди секцию вершин любого геосета, они идут столбиком в порядке их создания (там триады координат, каждая триада - вершина). Теперь ситуация такая, ты в мдлвисе выделяешь рамочкой три вершины. Что же делает мдлвис в данном случае (ну т.е. как бы я это реализовывал), он просто бежит по всему списку точек активного геосета и проверяет, находится ли очередная точка в области выделения (фактически в прямоугольном цилиндре) по своим координатам. И если точка находится в области выделения, то мдлвис добавляет её в конец списка выделенных точек.
Получается, что нельзя определить порядок выделения точек при выделении рамкой, так как этот порядок зависит от расположения выделенных точек в списке точек геосета, а этого списка моделлер не видит.
reALien, в часть где описывается создание полигонов добавь еще, что mdlvis отображает видимую сторону материала в редакторе геометрии только в режиме Вид -> Поверхность (кнопка S), а то народ будет смотреть в режиме текстурирования и видеть twosided или извращаться как truth troll, постоянно переходя в редактор анимаций.
И убери вот эту вот строку: "Опять же таки, вам понадобится mdlvis версии 1.40". Принцип порядка выделения вершин работает с самых бородатых версий. Тут, кстати, налицо большой плюс в сравнении с твоим методом, можешь хоть в версии 1.21 делать геометрию, и если будешь выделять вершины так как надо (а это не сложно, привыкаешь очень быстро), то все будет пучком.
PS: Суть то в чем, для управления лицевой стороной за счет порядка выделения вершин Алексею не пришлось писать совершенно никакого дополнительного кода. Он просто заталкивает выделяемые вершины в очередь в том порядке, в котором ты их выделяешь, а когда ты жмешь "создать треугольник", то мдлвис только лишь проверяет, чтобы длина этой очереди была равна трем, и тут же, без всяких отслеживаний по часовой ты выделил или против часовой, просто сразу же выбрасывает содержимое очереди выделенных вершин в список вершин полигонов модели. Т.е. на самом деле на то выделяешь ли ты по часовой или против часовой, вообще никто не смотрит в момент создания треугольника, просто уже в процессе отрисовки Direct3d и OpenGL смотрят на порядок расположения вершин в векторе, задающем множество полигонов геосета. Тут близзы тоже ребята ушлые, на самом деле в mdx этот вектор хранится чуть ли не в явном виде, остается только подставить координаты вместо номеров веришин и можно сразу же кидать на отрисовку. Ладно, это я уже глубоко полез. Тебе достаточно понимать, что порядок выделения вершин сработает на любой версии, потому что это не "фишка" введенная в какой-то версии, это вообще не "фишка".
"3. Когда сшиваете вершины треугольниками в vis'e, нужно смотреть на получаемую поверхность с того ракурса, который будет виден в результате."
3.14здеж. Просто нужно выделять вершины против часовой стрелки относительно той стороны, в которую должна быть направлена поверхность. Т.е. выделение типа:
3-2
|/
1
даст нам поверхность направленную на нас.
а выделение:
1-2
|/
3
даст поверхность направленную от нас.
Знание этого позволяет экономить сотни времени, не вращать лишний раз камеру и не заниматься онанизмом, "инвертируя нормали".
PS: На самом деле это все напрямую связано с процессом отрисовки модели, в секции вершин полигонов файла модели вершины распологяются именно в том порядке, в котором вы их выделяете, и, соответственно, так же будут считаны интерпретатором варкрафта, и точно так же будут им переданы на отрисовку в Direct3d или OGL (в зависимости от настроек), и вот как раз Direct3d или OGL будет считать лицевой именно ту сторону, которая задается порядком ввода вершин против часовой стрелки. А направление нормалей совершенно не влияет на "лицевую" сторону поверхности. Попробуй развернуть нормали при помощи того же 40-го мдлвиса просто их вращая - лицевая сторона не изменится.
Clamp, нет, это все равно, что рекламировать гугл на яндексе, а это, как говорится, уже совсем другая история.
Т.е. какой резон xgm-у сливать посетителей на ресурс по той же тематике что и сам xgm? Они ж там осесть могут.
DevilishXyligan, WoW ежемесячно оплачивается, только в 3 раза дороже чем старик. Да и WoW уже не торт. Он стал в разы площе по сравнению с тем, что было до WotLK. А с выходом катаклизма вообще превратится в жвачку. Быстро прожевал, чуток во рту поперекидывал от зуба к зубу, да и выплюнул.
Скидка на сами ключи. Никто вам диски высылать не будет. Т.е. покупаете ключи, скачиваете клиент и играете.
Скидки действуют до 30ноября.
PS: Особо хитрые под шумок низких цен могут понаприводить в WoW друзей через пригласительные ключи, и понаполучать халявных месяцев игры. Я уже двоих совратил :P Еще трое на очереди.
Отредактирован Iron
» WarCraft 3 / Исходный код MdlVis
Лично мое мнение: такое предвзятое отношение к делфям сложилось из-за относительно низкого порога вхождения. Но не обманывайтесь, простота там только на поверхности. Вы ведь не будете утверждать, что c++ жутко прост по причине того что под него есть такой замечательный компонентный IDE-фреймворк как Builder?
Приведу еще более понятную аналогию: вы ведь не будете утверждать, что принтер очень просто устроен, на основании того, что для печати на нем вам достаточно нажать две кнопки? А вы попробуйте самостоятельно взять свой принтер и увеличить ширину печатающей области, переделать из чернобелого в цветной, добавить возможность параллельно печатать сразу на двух сторонах листа, а так же сливать статистику о печати в web, тогда и поговорим о простоте и кривости.
Отредактирован Iron
» WarCraft 3 / Исходный код MdlVis
Отредактирован Iron
» Ретро-игры / Donkey
980 SAMPLES$="NO"
990 GOTO 1010
1000 SAMPLES$="YES"
...
больше нигде переходов на 1000 нет, так что... =)
Отредактирован Iron
» WarCraft 3 / Steel Saviour Episode II
А так, карта офигенна.
Отредактирован Iron
» StarCraft 2 / Мастер Клинка WCR
Отредактирован Iron
» Naruto - Nindogatari / Галерея.Old
» Пивная / Какая у вас профессия?
Вот у нас в универе есть специальность "прикладная информатика", вот там именно кодеров учат, минимум матана, вмеру алгоритмов (общеюзабельные, т.е. не особо выходящие за рамки сортировок, сетевых задач и т.п.). Основной уклон дают там именно на изучение существующих средств, методов, приемов написания кода.
В принципе, сейчас рынок переполнен разработчиками при нехватке профессиональных реализаторов (кодеров). Так что вполне перспективное направление, если планируете работать в крупной компании.
» Пивная / Какая у вас профессия?
» Forgotten Land / Приобретение сервера
Норм серваки нужно на VPS/VDS разворачивать, за 50$ в месяц можно подыскать очень даже гуд VPS с серверными окошками. И если онлайн пару сотен держать, то его и окупать можно на сателите под соответствующую игру.
Отредактирован ScorpioT1000
» Webstershire / Сделаем StormTech лучше!
элемент в красном кольце - я был бы рад возможности не проматывать километры вниз, высматривая заголовки, а просто напрямую увидеть такой вот списочек.
элемент в синем кольце - имхо "Карты (1) Новости (5) Статьи (1) Файлы (2) Проекты (1)" несколько информативные, чем "16 ресурсов". И не нужно говорить, что, мол, если нажать там, потом кликнуть тут и перейти вон туда, то придешь на страницу, где все еще информативнее.
» Webstershire / Сделаем StormTech лучше!
А в плане визуального комфорта, вверх просится хоть какой-то акцентный крупный элемент, а то глазу не за что цепляться, он сразу соскальзывает в гущу текста, что оставляет весьма неприятное ощущение, что ты не на сайте, а в RSS ленте какой-то.
По поводу одинакового контента, так я же написал, сделать шапку, и в, например, darkplatinum-е поставить для нее display:none.
» Webstershire / Сделаем StormTech лучше!
» Webstershire / Сделаем StormTech лучше!
StormTech куда витиеватее и крупнее в плане элементов, поэтому минималистичная шапка в нем ну совершенно не достаточна. При входе на страницу возникает ощущение, что ты уже прокрутил её на пару сотен пикселей вниз.
Изначальный вариант однозначно в этом плане рулит и разруливает. Можно поподробнее, почему пришлось отказаться от функциональной шапки исходного варианта?
» StarCraft 2 / Трейлер Subsistence
» WarCraft 3 / WarСraft III Shell extension 1.1
» Counter-Strike / Создание неба в VHE
» StarCraft 2 / Starcraft II, а используют ли его?
» WarCraft 3 / Полезные мелочи в работе моделлера
Хммм, сейчас придумал еще одну фишку, как сделать блик ну прям ну очень реалистичный, т.е. вплоть до скольжения по поверхности во время перемещения объекта или камеры. Сделаю наработочку и выложу. Возможно даже статью напишу.
» WarCraft 3 / Полезные мелочи в работе моделлера
Т.е. сохрани модель в mdl и найди секцию вершин любого геосета, они идут столбиком в порядке их создания (там триады координат, каждая триада - вершина). Теперь ситуация такая, ты в мдлвисе выделяешь рамочкой три вершины. Что же делает мдлвис в данном случае (ну т.е. как бы я это реализовывал), он просто бежит по всему списку точек активного геосета и проверяет, находится ли очередная точка в области выделения (фактически в прямоугольном цилиндре) по своим координатам. И если точка находится в области выделения, то мдлвис добавляет её в конец списка выделенных точек.
Получается, что нельзя определить порядок выделения точек при выделении рамкой, так как этот порядок зависит от расположения выделенных точек в списке точек геосета, а этого списка моделлер не видит.
PS: Суть то в чем, для управления лицевой стороной за счет порядка выделения вершин Алексею не пришлось писать совершенно никакого дополнительного кода. Он просто заталкивает выделяемые вершины в очередь в том порядке, в котором ты их выделяешь, а когда ты жмешь "создать треугольник", то мдлвис только лишь проверяет, чтобы длина этой очереди была равна трем, и тут же, без всяких отслеживаний по часовой ты выделил или против часовой, просто сразу же выбрасывает содержимое очереди выделенных вершин в список вершин полигонов модели. Т.е. на самом деле на то выделяешь ли ты по часовой или против часовой, вообще никто не смотрит в момент создания треугольника, просто уже в процессе отрисовки Direct3d и OpenGL смотрят на порядок расположения вершин в векторе, задающем множество полигонов геосета. Тут близзы тоже ребята ушлые, на самом деле в mdx этот вектор хранится чуть ли не в явном виде, остается только подставить координаты вместо номеров веришин и можно сразу же кидать на отрисовку. Ладно, это я уже глубоко полез. Тебе достаточно понимать, что порядок выделения вершин сработает на любой версии, потому что это не "фишка" введенная в какой-то версии, это вообще не "фишка".
» WarCraft 3 / Полезные мелочи в работе моделлера
3-2
|/
1
даст нам поверхность направленную на нас.
а выделение:
1-2
|/
3
даст поверхность направленную от нас.
» StarCraft 2 / Иконки Wc3
Этот наивняк так умиляет
» StarCraft 2 / SC2 Dialog Designer (v2)
Т.е. какой резон xgm-у сливать посетителей на ресурс по той же тематике что и сам xgm? Они ж там осесть могут.
» StarCraft 2 / Новые способы оплаты StarCraft 2
» World of WarCraft / The Shattering
Скидки действуют до 30ноября.
» World of WarCraft / The Shattering