HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть I
Страницы (240): « Первая ... « 146 147 148 149 [150] 151 152 153 154 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
А пример можно? Как это выглядит?

Представь себе типичную реализацию контейнера на С++, только без шаблонов. Вот так же и выглядит. Шаблоны я пока не прикрутил и не знаю точно, нужны ли они.

Цитата:
AntiPlayer писал:
У тебя JavaScript не получится на выходе?

Нет, у меня получится язык максимально близкий к С++ по синтаксису концепции и парадигме, но лишенный недостатков самого С++.
Цена за это - низкое быстродействие скриптовой машины.
Впрочем в дальнейшем можно будет прикрутить JIT, но это когда-нибудь потом.
По моим замерам быстродействие ниже С++ примерно в 9.5 раз.
Впрочем у Java без JIT оно наверное ниже раз в 100.

Добавлено 10-06-2022 в 22:02:

А то что я по языку мало новостей пишу - уж не обессудьте. На нашем форуме С++ знает только Xaerox, остальным навряд ли будет всё это интересно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 209680

Старое сообщение 10-06-2022 19:02
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12882
Возраст: 32

Рейтинг



Цитата:
Дядя Миша писал:
А то что я по языку мало новостей пишу - уж не обессудьте. На нашем форуме С++ знает только Xaerox, остальным навряд ли будет всё это интересно.


Так расжуй массам популярно, ты это умеешь, я знаю.

Сообщить модератору | | IP: Записан
Сообщение: 209681

Старое сообщение 10-06-2022 19:14
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Ну я вон выше про логические ловушки написал - никто даже не откомментил.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 209684

Старое сообщение 10-06-2022 19:41
-
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2087

Рейтинг



Дядя Миша я писал контейнеры на Яве, но там это выглядело так - заводим массив элементов на 10, при его заполнении создаём новый [n+10], делаем Arrays.copyOf и обнуляем старый массив

__________________
-Brain is dead-

Сообщить модератору | | IP: Записан
Сообщение: 209686

Старое сообщение 10-06-2022 20:31
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



В сущности принцип тот же. Но realloc всяко быстрее будет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 209691

Старое сообщение 11-06-2022 05:51
-
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4415
Возраст: 34

Рейтинг



Цитата:
Дядя Миша писал:
мы сперва должны узнать какой тип аргумента принимает bar

Кому была реально нужна эта фича, перегрузка? Это же зародыш современных Intellisense которые пытаются быть умнее пользователя и писать код за него.

Добавлено 11-06-2022 в 17:56:

Цитата:
Дядя Миша писал:
Ну я вон выше про логические ловушки написал - никто даже не откомментил.

Ну я допустим прочитал. Наверное единственное что я не читал-это не простыни где ты описывал историю всех своих проектов.
Можно конечно ввести кнопку "я прочитал" но принципиально важно чтобы счетчик был виден только автору поста, иначе стадный эффект убьёт форум.

Добавлено 11-06-2022 в 17:57:

Цитата:
Дядя Миша писал:
Цена за это - низкое быстродействие скриптовой машины.

Меня терзают смутные сомнения.

Сообщить модератору | | IP: Записан
Сообщение: 209693

Старое сообщение 11-06-2022 10:57
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Crystallize писал:
Кому была реально нужна эта фича, перегрузка?

Вообще-то на перегрузке весь полиморфизм основан.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 209701

Старое сообщение 11-06-2022 14:00
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Вообщем два миллиарда команд выполняется примерно за 21-секунду.
Цикл с условием INT_MAX. Для сравнения чистый С++ справляется за 4 секунды.
60 миллионов команд отнимает 0.7 секунды. Среднее кол-во инструкций для игрового кадра - ну может тысяч 20-30. Хотя это я так, навскидку.
Потом замерю, скажу точно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 209720

Старое сообщение 12-06-2022 07:50
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12882
Возраст: 32

Рейтинг



Самое прожорливое как правило это поиск и перебор игровых объектов, а так же их параметров.

Сообщить модератору | | IP: Записан
Сообщение: 209727

Старое сообщение 12-06-2022 10:09
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Поиск можно в движке будет сделать. Ну посмотрим.

Добавлено сегодня в 18:09:

Образчик кода на делфи, низкий уровень, где-то в раёне базы для всех классов

C++ Source Code:
1
procedure TComponent.ReadLeft(Reader: TReader);
2
begin
3
LongRec(FDesignInfo).Lo := Reader.ReadInteger;
4
end;
5
 
6
procedure TComponent.ReadTop(Reader: TReader);
7
begin
8
LongRec(FDesignInfo).Hi := Reader.ReadInteger;
9
end;

Помоему тут прекрасно вообще всё. FDesignInfo - это целочисленная 32-битная переменная. Очевидно ReadLeft читает младшие 16 бит, а ReadTop - старшие 16 бит. Встаёт сразу вопрос - а почему такая странная пара left-top? Почему не right-bottom например? Опять же из названия функции ReadLeft никоим образом не следует, что мы совершаем операции с FDesignInfo. Интересно какая была мотивация у того, кто это писал?
Может я чего-то не догоняю?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 209728

Старое сообщение 15-06-2022 15:09
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Upd. На GD.ru подсказали, что top-left - это верхний левый угол окна, т.е. его позиция, почему-то упакованая в int с названием FDesignInfo.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 209811

Старое сообщение 15-06-2022 19:27
-
PRoSToTeM@
Частый гость

Дата регистрации: Nov 2011
Проживает: Иваново
Сообщений: 57
Возраст: 27

Рейтинг



Дядя Миша, насчёт виртуальной машины, а почему бы не взять wasm с уже готовым JIT и биндингами, в который к тому же умеют компилироваться всякие разные языки (C, C++, C# и т.д.). Или этот вариант уже рассматривался и был отвергнут?

Сообщить модератору | | IP: Записан
Сообщение: 209812

Старое сообщение 15-06-2022 20:30
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



PRoSToTeM@ я вообще стараюсь как можно меньше использовать чужой код. По крайней мере - в виде готовых библиотек. Потому что он всегда не годится под мои задачи, которые выходят за рамки стандартных применений в силу того, что у меня есть своё виденье, как всё это должно быть устроено. Есть конечно вещи, которые меня устраивают - например форматы OGG и Theora. Писать свои собственные форматы для сжатого аудио и видео я точно не планирую.

Добавлено 16-06-2022 в 09:51:

И вообще любая привязка к чужим библиотекам это очень порочная практика.
1. ты привязываешься и поначалу тебе всё нравится
2. потом ты что-то изменяешь под себя\исправляешь ошибки
3. потом выходит новая версия оригинальной либы с исправленными ошибками, о которых ты вообще ничего не знал
4. вместо того чтобы писать код дальше - начинаешь мержить либо вносить в новую либу уже сделанные изменения
5. если чужих либ много - то периодически в каждую
6. следишь чтобы после всех этих изменений у тебя самого ничего не испортилось
7. в конце-концов плюешь и перестаёшь вносить эти изменения
8. к моменту релиза твой софт использует устаревшие версии с критичными дырками (к примеру)
9. обновлять их нельзя, так уже создан пользовательский контент, неизвестно что сломается после обновления
10. Плюешь на пользователей пилишь новую версию, несовместимую, заставляешь всех перелезть туда.
11. За это время куча либ получает очередные обновления...
Вот в итоге чем занимается современный разработчик который просто хотел "сэкономить немного времени".

Добавлено 16-06-2022 в 09:57:

Для себя я выработал два чётких критерия, когда можно использовать сторонние библиотеки и один опциональный:
1. функционал библиотеки отвечает абсолютно всем моим требованиям, а если какие-то мелочи и не отвечают, то альтернативы нет всё равно.
2. библиотека не обновлялась в течении очень долгого времени - 10-15 лет и скорее всего не будет обновляться уже никогда, но при этом достаточно активно используется программистами. Или пусть не так активно, но была задействована в продакшене, что тоже показатель.
3. (опционально) библиотека берётся на время, в качестве заглушки, потом вместо нее будет написана собственная реализация.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 209814

Старое сообщение 16-06-2022 06:57
-
AntiPlayer
Highway to Hell

Дата регистрации: May 2006
Проживает: Смоленск
Сообщений: 1015
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
1. функционал библиотеки отвечает абсолютно всем моим требованиям, а если какие-то мелочи и не отвечают, то альтернативы нет всё равно.

Про функционал понятно, а что с кодом? Ты его полностью вычитываешь и разбираешь?

__________________
I tell you to enjoy life

Сообщить модератору | | IP: Записан
Сообщение: 209816

Старое сообщение 16-06-2022 07:06
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
AntiPlayer писал:
Ты его полностью вычитываешь и разбираешь?

Нет. Я просто стараюсь использовать только библиотеки, которые реализуют функционал чёрного ящика - подали данные на вход, получили данные на выходе. Этим требованиям отвечают тот же OGG, Theora, Zlib, Squish, Jpglib, т.е. просто какие-то распаковщики сжатого формата данных. Или наоборот упаковщики. Когда результат работы очень легко проконтролировать.
Если же библиотека начинает своими импортами экспортами расползаться во все части движка, подобно раковой опухоли, я просто такое не использую в принципе.
Т.е. стороняя реализация виртуальной машины или физики или рендерера моим требованиям отвечать не может, поэтому там всё самописное.
Если вам нужен обратный пример, где всё заимстованное - то вот Unity есть.
До пятой версии там почти всё было со стороны.

Добавлено 16-06-2022 в 10:42:

Если вам интересно, приведу список third_party на текущий момент в XashNT

1. ogg.lib (будет использоваться)
2. theora.lib (будет использоваться)
3. vorbis.lib (будет использоваться)
4. squish.lib (возможно будет переписана в дальнейшем)
5. NvTriStrip.lib (возможно будет удалена, на настоящий момент от нее мало толку)
6. Qslim.lib (скорее всего будет написана собственная реализация Progressive Mesh)

Чужие реализации в исходниках
1. bunnylod от Stan Melax (еще одна реализация Progressive Mesh, уже доработанная мной для ипользования режима Shortes Edge и преодтвращения деградации на швах)
2. Реализация progessive mesh от Tom Forsyth (оригинальная версия)
3. ZLib (без изменений, но отрезано всё ненужное, исходник весит всего 38 килобайт, меньше чем скомпиленная zlib1.dll)

Т.е. легко заметить что добрая треть библиотек - это различные вариации на тему Progressive Mesh, но своей реализации я еще не написал, потому что вслепую это очень неудобно делать, а вот когда у меня будет свой редактор, я этим конечно займусь. Можно было бы заморочиться и просто написать визуализатор для опытов, но это нерациональная трата времени. TriStrip как пятое колесо в телеге, ну нет от него толку на современных GPU. И на GD.ru это тоже подтвердили. Хотя я всё по феншую делал, с ремапом. ZLib я выброшу, просто потому что в игровых контейнерах сжатие вообще не нужно, оно только вредит. Но опять же, это не раньше чем будет написан игровой редактор и разработан собственный формат контейнеров хранения файлов.

Как-то так.

Добавлено 16-06-2022 в 10:47:

Ну и пару слов за форматы audio\video. Ни vorbis ни theora меняться уже не будут, они хорошо задокументированы и вполне предсказуемы.
К примеру, в то же римейке Quake от Night Dive идут видео в OGV, которые ксаш прекрасно воспроизводит, а у меня там стоят либы, скачанные с официального сайта, датируемые 2006-м кажется годом. Это полностью устаканившийся формат, от которого не ждёшь никаких неожиданностей.
А вот то, что делала Google для своих ютубов, это просто формат видео, который может идти в паре с форматом аудио (любым) и практически любым типом контейнера. То есть там полный зоопарк, с которым нет никакого желания связываться.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 209817

Старое сообщение 16-06-2022 07:47
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 23:35. Новая тема    Ответить
Страницы (240): « Первая ... « 146 147 148 149 [150] 151 152 153 154 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть I
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024