![]() |
Страницы (255): « Первая ... « 163 164 165 166 [167] 168 169 170 171 » ... Последняя » Показать все 3825 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- XashNT: блог разработчика (https://hlfx.ru/forum/showthread.php?threadid=5297)
Дядя Миша
Ну так мы с тобой тогда ещё 8 лет назад разбирались как это работает. Вроде как и тогда к похожим выводам пришли. Просто да, в первых пдфках не очень доходчиво было описано.
Вот кстати тоже тебе в копилочку:
https://github.com/sonicether/SEGI
https://forum.unity.com/threads/bak...eleased.536008/
https://unityassetcollection.com/ba...-free-download/
Добавлено 18-09-2022 в 11:26:
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дочитал тот документ по Enlighten. Ну что сказать? Опять куча лайтпроб, нерегулярная сетка, масса проблем и их героическое преодоление.
Всё то, с чем я столкнулся еще в P2, только в гораздо больших масштабах.
Надо подумать, возможно имеет смысл генерировать эти лайтпробы прямо на лету, но опираясь на информацию от трансферов и VPLS.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Это при условии, что источник света неподвижен, а больше всего лайтпроб на открытом пространстве, где мы хотим сделать смену дня и ночи.
То есть всё это имеет ограниченное применение.
У меня тут есть любопытная мысль, на стыке LPV и Enlighten замутить технологию, может быть что-то и получится из этого. Из LPV взять генерацию лайтпроб налету в регулярных сетках, а из Enlighten - те самые предрассчитанные данные. Ну в смысле идеи взять, а не код, конечно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Ничего пока не скажу, это так, задумки на будущее.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Сегодняший день, 19.10.2022 можно официально считать датой рождения нового языка программирования.
Это не день, когда я внезапно принял решение о создании такого языка. Это не день, когда я набросал первый прототип и провёл первый юнит-тест, в стиле Hello World. Это день, когда мне удалось портировать на новый язык исходный код меню из XashNT, написанный на С++ и провести серию тестов по стабильности, производительности, да и вообще соответствию языка ожидаемому поведению. Теперь, когда, всё это сделано, уже можно с ответственностью заявить - язык создан, опробован в деле и будет как минимум использоваться внутри среды разработки игр XashNT. Подобно тому, как для первого квейка использовался QuakeC или для Unity используется C#. Однако заложенные в нём возможности позволяют использовать язык и для любых других задач, в отличие от того же QuakeC, он не прибит гвоздями намертво к игровому движку и там нет никаких явных привязок.
Язык имеет собственное имя: HeadShot или просто Shot. В этом можно усмотреть аллюзии на С++ который позволяет стрелять себе в ногу. А мой язык позволит выстрелить сразу в голову и не мучаться. Или же намёк на то, что с его помощью можно писать игровой код для шутеров, в которых хедшоты - важная часть игрового процесса. В принципе оба утверждения в какой-то степени справедливы. Но в какой именно, я конечно не скажу, т.к. любой продукт должен обрастать собственными легендами с момента появления. Расскажу поподробнее как я пришёл к выводу, что мне нужен собственный язык, что в нём планировалось сделать и что уже сделано, а что еще только предстоит.
Идею создания собственного языка я вынашивал примерно с 2006-го года, но тогда, у меня разумеется, не было для этого никакого опыта. Поэтому я планировал использовать расширенный QuakeC из движка FTE. Этот движок, к слову, развивается до сих пор, причём по большей части упор делается именно на расширение возможностей QuakeC. К сожалению изначальные рамки, заданные для этого языка Кармаком, сделали невозможным добавление в него многих возможностей и особенностей С++, которые на мой взгляд оказались бы весьма полезными. Я так же рассматривал другие языки, которые бы меня полностью устроили, однако ничего подобного так и не удалось найти. Минимальное соответствие моим требованиям было только у AngelScript, но и там были вещи, которые меня не устроили. К тому же, с момента, когда было принято решение о портировании VCL, он отпал автоматически. Возможно кто-то не в курсе, но портировать Delphi на C++ в ряде случаев - нерешаемая задача. Заодно, у тех, кто внимательно следит за моими "невероятными приключениями", наверняка встал вопрос - отчего же я не взял уже портированую библиотеку VCL, для C++ Builder. Ведь разработчики Delphi выпускали и такой продукт тоже и там VCL тоже была. Так вот если внимательно изучить рантайм, то вы увидите, что там VCL присутствует в своём оригинальном виде, т.е. по прежнему на языке Delphi. Никто и никогда не портировал её на С++, в нём отсутствует ряд возможностей, которые она активно использует. В частности там нет свойств и нет виртуальных конструкторов. А вот на C# она успешно портирована, как раз потому что, этот язык и создавался с учётом возможности портирования подобного кода. То есть в каком-то смысле я повторяю путь Микрософта начала нулевых. Но конечно у меня есть собственные идеи, насчёт всего этого. Исходя из всего вышесказанного было принято единственное верное решение - нужен свой собственный язык. В котором следует реализовать как минимум привычный синтаксис и поведение С++ и заодно те вещи, ради, которых всё это и затевалось. Перечислю их:
1. Возможность легкого отправления объектов по сети. Для чего у члена класса просто ставится необходимый атрибут и больше ничего делать не надо. Всё остальное происходит автоматически. Опционально можно указать сколько бит переменной должно быть передано.
2. Возможность легкой сериализации объектв. Полностью аналогично первому пункту - атрибут у переменной и опционально указать кол-во бит.
3. Возможность портирования кода с Delphi. Здесь нам понадобятся виртуальные конструкторы и свойства с расширенными возможностями.
4. Язык ни в коем случае не должен иметь привязки к игровому движку, как это случилось, например с QuakeC, но одновременно должен позволять максимально плотную интеграцию для увеличения скорости работы и её упрощения.
5. Язык должен иметь синтаксис и поведение полностью аналогичные С++, при этом предоставляя программисту такие возможности, которых в С++ нет и они там не появятся уже никогда. А если и появятся, то это будет сделано через костыли типа STL.
6. По возможности сохранить в языке идеологию, заложенную Страуструпом - вы не платите за то, чем не пользуетесь. Практически все известные мне скриптовые языки эту концепцию игнорируют.
7. Встроенные в язык средства отладки, позволяющие выводить исполняемый код на экран, расставлять точки остановки, ошибки внутри исполняемой среды языка не должны приводить к краху всего приложения - ну вообще стандартные возможности песочницы.
8. Не слишком удручающая скорость выполнения кода, даже без преобразования опкодов в реальные исполняемые коды x86. Т.е. без JIT-конвертации.
9. Возможность манипулирования объектами со стороны рантайма, например для реализации физики объектов, подобно тому как это было сделано в Quake.
Вот такие задачи были мной поставлены и надо сказать, у меня получилось практически всё из намеченного. Так же у языка будет возможность работы на 64-х битных системах, я изначально закладывал это в его архитектуру, но пока в этом просто нет необходимости.
Архитектура системы комманд - RISC. Команды имеют фиксированную длину и три операнда (но необязательно используются все три). Из них смещения на данные в случае 16-битных смещений составляют 6 байт, а в случае 32-битных смещений соответственно 12. Плюс 4 байта информации. Из которых 8 бит - номер опкода и по 8 бит мета-информации на каждый операнд, где 2 бита - размер операнда, а 6 бит флаги их состояний. В отличие от CISC-системы команд, их легко проматывать и полностью исключена возможность вредоносного вмешательства из-за переполнения буффера, когда данные трактуются как команда.
Немного о практическом применении, с учётом накопленного опыта. Valve, как вы знаете, купив первый Quake у Кармака, очень быстро упёрлась в возможности этого ограниченного языка и было принято решение переписать игровую библиотеку на С++. Это было сделано в спешке, поэтому кодинг под GoldSource напоминает пляски на картофельном поле с дедомграблях. Абсолютно все сталкивались, не с тем, так с этим.
Просто раз уж у нас тематический форум по халфе, в каком-то смысле, вы все хорошо знаете, о чём я говорю. Так вот для многих эти ужасы послужили негативным стимулом вообще забросить программирование.
Что характерно, Valve не отошла от этой практики и в последующих движках, но там действительно уже было невозможно ориентироваться, даже на мой взгляд.
Плюс разработка под С++ требует наличия на компьютере тяжеловесной MSVC. Иногда требуется какая-то строго опредлённая версия, иначе потребуются дополнительные пляски с бубном. Unity со своим C# аналогично требует наличия MSVC. К тому же у меня в последнее время сложилось нехорошее впечатление, что сигналом для выхода новой версии Unity как раз и служит новая версия СиШарпа. Может быть в 2005-м году, когда Юнитех сделал свой выбор пользу Шарпа, он еще не выглядел так страшно, как сейчас, хотя тенденция уже тогда просматривалась. Так или иначе, но лично мне совершенно не хочется зависеть от капризов разработчиков стороннего языка и следить, чтобы код мог компилироваться на целом букете компиляторов. В дальнейшем, если новый язык выйдет за рамки XashNT и получит некоторое распространение для решения иных прикладных задач, об этом придётся задуматься, но пока что здесь обеспечена необходимая целостность.
А редактор исходного кода я встрою прямо в основной редактор, таким образом вам вообще не придётся использовать студию для разработки игр на XashNT. Но конечно не исключена возможность и сопряжения компилятора с теми видами продвинутых блокнотов, к которым вы привыкли. Да и в самой студии, вроде как есть возможность подмены компилятора. Это что касается вопросов редактирования исходников.
Сказано достаточно, теперь самое время ответить на ваши вопросы, которые у вас возможно появились по вышенаписанному.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Плюшка из Делфи, в виде «набросал контроллов и готово» перекочевала тоже?
И насколько оно будет совместимо со старыми версиями винды и старым железом в целом?
Возможно у нас здесь собралась аудитория которая не слишком хорошо знает все возможности С++, да и не факт, что многим это будет интересно, но я всё же опубликую список того, чего ещё нет в моём языке (в отличие от С++) и что планируется туда добавить, т.к. разработка языка еще не завершена, хотя в сущности поставленная задача уже выполнена.
Итак, что еще планируется добавить в язык:
1. Перегрузка операторов. Полезна для создания абстрактных типов данных, вроде векторов, матриц и комплексных чисел, но и не только.
2. Поддержка функций внутри функций как в Delphi, ну или лямбда-выражений, пока еще не определился точно. К слову сказать трюк с объявлением локального класса прямо внутри функции, как это возможно в С++, у меня тоже работает, хотя, как и так, не даёт никаких преимуществ, в плане оптимизации.
3. inline-разворачивание функций. Это весьма сложная вещь, которая прячется за простым интерфейсом. К тому же я не уверен, что в случае скриптового языка от нее будет какая-то польза. Но серию экспериментов я конечно проведу. Для методов get\set (невиртуальных свойств), развертывание, к слову уже имеется, т.к. это часть их природы.
4. Шаблоны для функций. На данный момент поддерживаются только шаблоны для объектов. Не то чтобы сложно, просто руки пока не дошли.
5. Доступ к защищенным членам класса с выводом соответствующих ошибок. На данный момент компилятор не учитывает секции private\protected\public, хотя и хранит информацию о них. Это в сущности мелочь, т.к. при ошибке доступа просто выдаётся соответствующее предупреждение компилятора, больше ничего не делается.
6. Механизм исключений. Он не является особенностью именно С++, т.к. есть много где. И он идеально ложится на RISC-архитектуру. Аналогично пункту 4 пока не дошли до него руки.
Все остальные возможности и особенности С++, по крайней мере те, которые регулярно используются так или иначе уже реализованы. Постепенно всё будет приводится к соответствию стандартов самого С++, если речь идёт об унаследованных особенностях, а те вещи, которых в С++ нет, будут максимально тесно интегироваться с уже имеющимися для обеспечения максимальной целостности нового языка.
Добавлено 19-10-2022 в 10:45:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Дядя Миша
Это все конечно хорошо, а есть рабочая версия - запустить посмотреть, что и как?
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------
Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.
http://button.moddb.com/download/medium/125531.png
(_-=ZhekA=-_) есть. Читай F.A.Q.
https://hlfx.ru/forum/showthread.php?s=&threadid=5696
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------
Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.
http://button.moddb.com/download/medium/125531.png
Временная зона GMT. Текущее время 11:48. | Страницы (255): « Первая ... « 163 164 165 166 [167] 168 169 170 171 » ... Последняя » Показать все 3825 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024