![]() |
Страницы (255): « Первая ... « 138 139 140 141 [142] 143 144 145 146 » ... Последняя » Показать все 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)
Да, undone - разломато, загублено.
UNDONE - недоделато, я так всегда понимал.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Недоделато — incomplete, unfinished.
Вобще я всегда нелюбил это слово, поэтому в каментах к коду использую только
TODO и FIXME. Ну еще иногда HACKHACK и TESTTEST
Кстати товарищи, вот вам от меня небольшой лайфхак. Ни для кого не секрет что очень многие начинающие программисты бояться работать с памятью, с указателями, поскольку программа вылетает. Но дело не в том, что она программа вылетает. Дело в том, какой звук она при этом издаёт!
Стандартный виндовый звук ошибки даже подготовленного человека заставляет наложить фштаны, или спровоцировать энурез, понятно.
Поэтому мой вам совет - идёте в звуковые схемы и там на звук ошибки ставите что-то более нейтральное, например "Звездочка.wav". И Вася-кот!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
https://igroprom.d3.ru
https://t.me/deex_gamedev
Вопросы про авто-нумерацию билда вынес в отдельную тему:
https://hlfx.ru/forum/showthread.php?s=&threadid=5834
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Crystallize ты как-то тему невнимательно читал.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Знаете, пожалуй, что самое сложное при написании компилятора программ?
Неважно настояшего или виртуальной машинки, потому что между ними разница только в том, какие опкоды этот компилятор генерирует - для процессора или виртуальные. Так вот самое сложное в том - чтобы отследить все пользовательские ошибки и выдать сообщение.
В отличие от всех остальных типов компиляторов, ну например уровней или моделей, да чего угодно, где наоборот приветствуется выдача предупреждения и нормальное продолжение работы, здесь надо ругаться на каждую мелочь. Потому что потом программа запустится и вы уже не поймете что получилось. А компилятору в целом пофигу, пока ему не сделаешь явный вызов ошибки, он будет собирать любую дичь абсолютно.
Можно например в структуре сделать кучу переменных с одинаковыми именами, компилятор будет просто каждый раз обращаться к первой.
Технически здесь нет никакой ошибки. Но для юзера - есть.
Добавлено 06-05-2022 в 10:02:
Я вам характерный примерчег приведу.
Я уже упоминал, что при инициализации членов класса можно через двоеточие задавать кол-во бит, которые будут использоваться не для выравнивания структуры, как в настоящем языке, а как подсказка для сейв-рестора и передачи по сети. Выглядит это вот так, ну вы знаете:
1 | class CBaseEntity |
2 | { |
3 | string m_targetname : 16; |
4 | float m_health : 10; |
5 | unsigned int m_skin : 8; |
6 | }; |
1 | if( CheckToken( ":" )) |
2 | { |
3 | if( m_immediateType != type_integer ) |
4 | m_lexer.Error( LEX_CONSTANT_EXP_NOT_INTEGRAL, "constant expression is not integral" ); |
5 | else bits = m_immediate.integer; |
6 |
7 | if( bits == 0 ) m_lexer.Error( BIT_FIELD_ZERO_COUNT, "'%s' : named bit field cannot have zero width", name ); |
8 | else if( bits < 0 || bits > 32 ) |
9 | m_lexer.Error( BIT_FIELD_INVALID_COUNT, "'%s' : type of bit field too small for number of bits", name ); |
10 | if( type->Type() != ev_integer && type->Type() != ev_float && type->Type() != ev_string ) |
11 | m_lexer.Error( BIT_FIELD_INVALID_TYPE, "'%s' : bit field must have type 'int', 'float', or 'string'", name ); |
12 | def->bits = bound( 1, bits, 32 ); |
13 | NextToken(); |
14 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
А разве нет уже готовых решений? Зачем изобретать велосипеды?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Готовые решения, в лучшем случае code-driven к тому же внутренние методы спрятаны от пользователя и находятся только в документации.
Для того чтобы вызвать какой-нибудь косинус в яве ты не можешь заглянуть в хидер. Либо лезть в документацию, либо помнить наезусть, либо надеяться, что тебе студия вывалит подсказку. Всё это очень неудобно.
Я пишу data-driven машинку, т.к. это общая концепция XashNT.
Добавлено 06-05-2022 в 10:30:
Поясню на примере. Когда у тебя в коде виртуальной машины есть хидеры со списком всех доступных системных, функций, ты уже можешь прикидывать что тебе понадобится для реализации. А не листать многостраничную документацию или вообще с размаху налететь на стену, узнав что такого метода просто нет, но в следующей версии появится обязательно.
Добавлено 06-05-2022 в 10:34:
Для мапперов очень хороший пример приведу. Энтити, которые есть в игре вам не видны. Вы можете только прописать их в FGD, причём FGD и реальные энтити никак не связаны. Вы можете прописать туда несуществующую энтить или наоборот - забыть прописать то, что есть.
Вот с этими виртуалками, у которых системные методы нигде не задекларированы точно такая же ситуация. Очень неудобно это.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Сегодня товарищи, знаментальный день. Я набиваю для виртуального языка системные функции, ну что-то вроде CRT. И дело дошло до функции Q_timestamp. И тут я вспомнил! Эта функция была мною написана в апреле 2007-го года (первые опыты с написанием движка начались в феравле 2007-го). Так вот я её написал, чтобы в лог сохранять дату когда движок был запущен и соответственно остановлен.
Эта функция пережила старый ксаш (ну который несовместимый ни с чем), переехала в Xash3D и оттуда разумеется попала в FWGS, затем она так же без изменений попала в XashNT и вот я делаю её частью стандарта будущего скриптового языка. И теперь миллионы людей по всему миру её увидят и будут ей пользоваться. А-ФИ-ГЕТЬ. Знал бы я какая судьба будет у этой функции, когда я её писал в апреле 2007-го года, я бы удивился и неповерил.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Пишу конвертор Delphi -> C++. Для того чтобы изучать исходники QuArK, естественно. Мне проще написать конвертор, чем забивать голову этим ублюдошным синтаксисом.
Интересно, будет ли такой конвертор нужен кому-то еще кроме меня?
Добавлено 13-05-2022 в 02:12:
Делфи изумительный язык. Мало того что его компилятор по сути стейт-машина, так в язык намеренно введены конструкции чтобы программист выполнял половину работы за компилятор.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
-Brain is dead-
Временная зона GMT. Текущее время 18:46. | Страницы (255): « Первая ... « 138 139 140 141 [142] 143 144 145 146 » ... Последняя » Показать все 3825 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024