Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Вопрос что лучше?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63960
Блог
UtoECat
Разрабатываю "Игровой движок". Возникла необходимость сохранять все Игровые объекты на сцене. ИГРОВОЙ ОБЪЕКТ помимо стандартных данных содержит нетипизированный указатель.

В этот момент появляется ощущение кривого дизайна и необходимости лучшего изучения основ ООП. При грамотной реализации здесь поставленный вопрос просто не возникнет. Думаю, Вам стоит рассказать, как Вы строите свой "игровой движок" и спросить, как его стоит переделать.

UtoECat
Вопрос: Что лучше в данной ситуации : БД или список строк?

Скажем так, тащить в проект лишнюю сущность незачем. БД не исправит ошибок, допущенных при проектировании.
14 ноя 20, 20:44    [22232158]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
UtoECat
Member

Откуда:
Сообщений: 42
*удалено

Сообщение было отредактировано: 14 ноя 20, 21:05
14 ноя 20, 21:07    [22232161]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51775

UtoECat
если не выйдет тогда уж прибегну к строкам.

Двигаться надо от простого к сложному, а не наоборот.

Posted via ActualForum NNTP Server 1.5

14 ноя 20, 21:12    [22232162]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
UtoECat
Member

Откуда:
Сообщений: 42
Dimitry Sibiryakov

UtoECat
если не выйдет тогда уж прибегну к строкам.

Двигаться надо от простого к сложному, а не наоборот.

Нужно двигаться к максимально возможно эффективному и хорошему... На простом далеко не ускачешь.
15 ноя 20, 00:39    [22232227]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 1350
UtoECat
Dimitry Sibiryakov

пропущено...

Двигаться надо от простого к сложному, а не наоборот.

Нужно двигаться к максимально возможно эффективному и хорошему... На простом далеко не ускачешь.

Тебе говорят, что делать, а ты какую-то хрень несёшь. Зачем спрашиваешь тогда?
15 ноя 20, 00:50    [22232230]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
UtoECat
Member

Откуда:
Сообщений: 42
softwarer

В этот момент появляется ощущение кривого дизайна и необходимости лучшего изучения основ ООП. При грамотной реализации здесь поставленный вопрос просто не возникнет. Думаю, Вам стоит рассказать, как Вы строите свой "игровой движок" и спросить, как его стоит переделать.

1. ООП - зло, если будет использоваться слишком часто. Думаю вы это понимаете. 2 . С ООП как с концепцией я знаком хорошо, т.к первые шаги в программировании делал на C#. И с его синтаксисом и функционалом в дельфи соответственно тоже.
3.Что-ж вы сами это попросили. Мой движок представляет из себя средство по обеспечению хранения, доступа к ИГРОВЫМ ОБЪЕКТАМ ( ЭТО НЕ ООП!!!) , обеспечивает возможность взаимодействия объектов друг с другом и взаимодействие пользователя с ними соответственно, способ установки и контроля поведения объектов, а так-же обеспечивает (по крайней мере должен будет в будущем) обеспечивать оптимизацию алгоритмов происходящих под капотом.
Движок я уже переписываю третий раз и в основном это я делал для достижения более удобного и красивого распределения кода по юнитам и исправлению ошибок, а так-же для добавления в будущем новой системы присвоения и выборке текстур.
Движок использует для отрисовки игрового пространства библиотеку OpenGL и в будущем будет поддерживать работу со звуком через bass.dll .
Игровой объект , это рекорд тип . Пока он реализован так :
TYPE TTRANSFORM = RECORD
X,Y,Z,SX,SY,R : REAL;
END;
TYPE TVISUAL = RECORD
R,G,B,A:BYTE; TEXTURE : INTEGER;
END;
TYPE TSEOBJECT = RECORD
TRNC : TTRANSFORM;VISUAL : TVISUAL;PARENT : INTEGER; ID:INTEGER; DATA : POINTER;
END;
TYPE PSEOBJECT = ^TSEOBJECT;

Функционал объектов, их отрисовка и прочее устанавливается объектом родителем. В объекте указан индекс родителя в МАССИВЕ РОДИТЕЛЕЙ. Сам родитель - абстрактный класс. Его финальная реализация (+\-)
TYPE TGAMEPARENT = CLASS (TSEPARENT)
  PROCEDURE objCREATE(VAR OBJ:TSEOBJECT);OVERRIDE;
  PROCEDURE objPROCESS (VAR OBJ:TSEOBJECT;var scene:tgamescene;INDEX : integer);OVERRIDE;
  PROCEDURE objDRAW(VAR OBJ:TSEOBJECT);OVERRIDE;
  function objCOLLISION(CONST currOBJ:TSEOBJECT;CONST withOBJ:TSEOBJECT):boolean;OVERRIDE;
  PROCEDURE objDESTROY(VAR OBJ:TSEOBJECT);OVERRIDE;
  FUNCTION  objSAVE(VAR OBJ:TSEOBJECT):STRING;OVERRIDE;
  PROCEDURE objLOAD(VAR OBJ:TSEOBJECT;const s : string);OVERRIDE;
  PROCEDURE objACTION(VAR OBJ:TSEOBJECT; ACTION : BYTE);OVERRIDE;
END;


Игровая сцена - рекорд тип, состоящий из массива игровых объектов, а так-же массивов идентификаторов объектов : Массив идентификаторов сортированных по Z объектов в поле зрения, Массив id объектов, родители которых имеют реализацию objProcess, И массив id объектов с которыми МОЖЕТ производится коллизия (объектов недекораций);

Концепция движка подразумевает лишь необходимость описать родителей и написать дополнительные внешние факторы добавления \изменения\удаления некоторых объектов для получения готового игрового проекта. Код потихоньку пишется, функционал растёт. Необходимость сохранения загрузки - вещь очень необходимая, и я уже нашёл способ того как это сделать о чём написал выше.

Сейчас я в основном посиживаю в low level модулях движка, где дописываю код, т.к сел переписывать буквально неделю назад ( когда компилятор запутался в моём коде в прямом смысле этого слова)

Сообщение было отредактировано: 15 ноя 20, 01:02
15 ноя 20, 00:59    [22232232]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
UtoECat
Member

Откуда:
Сообщений: 42
ъъъъъ,

Я же сказал, что уже решил как делать ! Сначала тесану TFILESTREAM, а если не выйдет, то уж ваши строки буду юзать.
15 ноя 20, 01:01    [22232234]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63960
Блог
UtoECat
Нужно двигаться к максимально возможно эффективному

Тогда прежде всего следует отказаться от Delphi и не трахать людям мозг. Чемпионом эффективности Delphi не будет никогда.

UtoECat
ООП - зло, если будет использоваться слишком часто.

Выберите что-нибудь одно: либо Вы новичок, который задаёт тривиальные вопросы, либо Вы знаток, который рассказывает как надо делать. Попытка сочетать то и другое показывает лишь невменяемость.

UtoECat
В объекте указан индекс родителя в МАССИВЕ РОДИТЕЛЕЙ

Красота. В начале шестидесятых, во времена Фортрана, программировали именно так. Мой научный руководитель, один из первых советских программистов, настойчиво склонял меня на этот стиль, объясняя, что указателей он не понимает и пользоваться ими опасно.

UtoECat
Сам родитель - абстрактный класс. Его финальная реализация (+\-)

Теперь объясните, какая разница, куда пихать результат метода objSAVE - в стрим, в текстовый файл или в БД? Исходный вопрос продолжает быть актуальным?
15 ноя 20, 05:35    [22232258]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
rgreat
Member

Откуда:
Сообщений: 6312
Да уж. Тяжело новичку в этом обществе старых троллей.
15 ноя 20, 05:54    [22232259]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1975
"новичок" случаем не такой же старый тролль?
15 ноя 20, 08:11    [22232264]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
Vizit0r
Member

Откуда: Одесса
Сообщений: 855
Дегтярев Евгений
"новичок" случаем не такой же старый тролль?


тут вобщем-то 2 варианта - или от еще старее и толще, либо самое время начинать разбивать лицо в кровь ладонями, раз он пишет такое серьезно.
15 ноя 20, 09:32    [22232273]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
L1G
Member

Откуда:
Сообщений: 141
UtoECat, превращение объекта или целого дерева объектов в то, что можно записать в файл называется сериализация и есть много готовых решений для этого.
Я бы сначала рассмотрел возможность использовать встроенные средства Delphi (для формирования DFM, есть бинарный и текстовый варианты).
Древняя статья: https://rsdn.org/article/delphi/serialization.xml
15 ноя 20, 12:02    [22232292]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 1350
L1G,

нет у него объектов, которые классы.
Рекорды у него, смотри его последнее сообщение.
Вообще непонятно, что он хочет.
15 ноя 20, 12:13    [22232297]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 1350
Дегтярев Евгений
"новичок" случаем не такой же старый тролль?

Кодит, похоже, на терминале ЕС - 7927: нижний регистр символов отсутствует...
15 ноя 20, 12:22    [22232302]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63960
Блог
ъъъъъ
Вообще непонятно, что он хочет.

Как раз вполне понятно. Во-первых, он откопал какую-нибудь книгу конца девяностых типа "Секреты программирования игр" (помнится, выходила такая в издательстве "Питер" с примерно таким же содержимым). Во-вторых, раскопал какое-нибудь доисторическое говно типа KOL и решил, что это очень круто. Теперь пытается скрестить ежа с ужом кривыми руками, дабы получить немерянный рулез.
15 ноя 20, 12:37    [22232310]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 459
Капсовый код, о майн готт...
15 ноя 20, 13:14    [22232320]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
UtoECat
Member

Откуда:
Сообщений: 42
softwarer,
1.А разве учиться на ошибках это плохо?
2. Я понимаю что такое указатели и массив родителей нужен для упрощения процесса сохранения
3. Данная тема закрыта
4. Не надо устраивать срач. Я же вас не заставляю использовать то, что я делаю, верно? Мой проект держится лишь на шестилетнем интузиазме и делается для собственного пользования и всю эту ох какую историю я рассказывать не буду.
15 ноя 20, 13:37    [22232328]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
UtoECat
Member

Откуда:
Сообщений: 42
softwarer,

1.Хотел бахнуть я вообще-то сначала на С++, но меня мой знакомый уговорил на дельфи.
2. Я не совсем новичок.Первые вообще успехи я делал в ... А собственно не важно где.
3. Вопрос закрыт. Я опять же ЗАБЫЛ ПРО TFILESTREAM, потому что 1. Устал 2. Я про него мало чего читал.
4. Большая
15 ноя 20, 13:45    [22232331]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
UtoECat
Member

Откуда:
Сообщений: 42
Vizit0r,
Softwarer, книги тут не причём. Это полностью самостоятельно придуманная концепция.
15 ноя 20, 13:50    [22232334]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63960
Блог
UtoECat
1.А разве учиться на ошибках это плохо?

Смотря на чьих.

UtoECat
3. Данная тема закрыта

Замечательно. И всего-то потребовалось вспомнить про ООП.

UtoECat
Мой проект держится лишь на шестилетнем интузиазме

То есть, после шести лет работы и троекратного переписывания Вы задаёте такие вопросы и продолжаете быть уверены, что всё делаете правильно?
15 ноя 20, 13:52    [22232338]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
UtoECat
Member

Откуда:
Сообщений: 42
softwarer,
1. На своих-то
2. ИМХО вы вообще не читали здесь все сообщения. Мой вопрос был ЧТО ЛУЧШЕ ДЛЯ ХРАНЕНИЯ ДАННЫХ ОБ ИГРОВЫХ ОБЪЕКТАХ: Список строк или БД, но потом Я НАШЁЛ ТFILESTREAM и СКАЗАЛ :
автор
Тема закрыта. Буду использовать TFILESTREAM, а если не выйдет, то тогда уж Список строк
. Про ООП НЕ БЫЛО НИ СЛОВЦА (вообще мне стоило сразу сказать что такое игровой объект, как я понял из за этого были недопонимания).
3. С самого начала я полез в такую вещь как HiASM (основной пакет которого на дельфе кста), на нём просидел ПЯТЬ ЛЕТ, но осознал, что это всё фигня и каши на нём не сваришь; и потом перелез на C#, где мне не понравилось, а потом на дельфу собственно.
Разработка кода этого движка ведётся где-то всего 4-5 месяцев. Учил дельфи Три месяца до начала написания движка, т.е владею всеми основными понятиями ( только кроме дженериков, т.к посчитал их пока ненужными)
15 ноя 20, 14:09    [22232346]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
Vizit0r
Member

Откуда: Одесса
Сообщений: 855
UtoECat
т.е владею всеми основными понятиями ( только кроме дженериков, т.к посчитал их пока ненужными)

нет, не владеешь.
Ничем не владеешь. Ни пониманием ООП, ни пониманием правильного кода, ничем вообще.

Вообще это дело наживное, но ощущение что ты четко двигаешься сильно неправильной дорогой, думая что это круто и здорово.

Я когда взялся, точнее подхватил полудохлый проект - с первых же дней старался сделать его лучше, используя правильные технологии, и не стеснялся слушать и воспринимать чужие идеи, а не следовать первоначальной концепции говнокода. Да, с тех пор почти весь код был переписан чуть менее чем полностью несколько раз, но это явно пошло ему на пользу.

А ты упираешься в тупиковый подход, и тупо отрицаешь все остальное. Ну, дело хозяйское.
15 ноя 20, 18:19    [22232419]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 1350
UtoECat
Три месяца

Почему прописными буквами код пишешь?
15 ноя 20, 18:27    [22232422]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
loktevVasiliy
Member

Откуда:
Сообщений: 11
UtoECat
Я НАШЁЛ ТFILESTREAM


Нет, используй TMemoryStream (MemoryStream.LoadFromFile) А когда нужно сохранить в файл, делай MemoryStream.SaveToFile.

К нему же используй вдогонку TWriter с TReader.

Получишь самые быстрые сохранения
15 ноя 20, 20:57    [22232464]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос что лучше?  [new]
loktevVasiliy
Member

Откуда:
Сообщений: 11
А можно сразу всю структуру сохранять
https://github.com/KrystianBigaj/kblib
15 ноя 20, 21:01    [22232467]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Delphi Ответить