Привет! Это вторая статья, в которой я хотел бы уже более детально рассказать и показать наш взгляд на процесс создания игры, то, чем мы сейчас и занимаемся. Итак… Погружение продолжается…
![image](https://habrastorage.org/files/a09/110/a83/a09110a835574e5fb1db3ba2634748eb.jpg)
А начать я хотел бы с основ, как известно, фундамент — самое главное в строительстве дома. Так что расслабьтесь от кода, пока мы с вами сфокусируемся на чертежах и планах будущего строения :)
Фундамент проекта, который мы делаем, заключается в создании некой «Базы данных представлений», как я её называю, а если проще — то базы данных объектов и взаимодействий между ними.
С моей точки зрения, с этого логично начинать, но пока что, за исключением нескольких проектов, сделать это никто не пытается, настолько, насколько глубоко хотим мы. А хотим мы, грубо говоря, перенести базу данных образов, объектов и взаимодействий из нашей реальности в ту самую маленькую коробочку, под названием компьютер. Звучит шизофренично? Да это только на первый взгляд! :)
Мысли о невозможности реализации такого масштабного проекта, на самом деле кроются в ограниченности нашего мышления, боязни начать делать то, чего ещё никто не делал и немножко в ограниченности доступных компьютерных ресурсов на данный момент, последнее, к счастью, — решается.
Тем, кто сразу отрицает на корню возможность реализации такого проекта, я бы предложил читать далее просто как сказку, там же всё возможно. Остальным предлагаю вникнуть в картинки настолько глубоко, насколько получится, потому что на наш взгляд, мы как люди, а точнее наш мозг именно так и устроен, как мы пытаемся сделать, и отрисовка реальности происходит на основе той постоянно пополняемой базы данных образов, логических цепочек и представлений обо всём вокруг, что мы успели накопить и распаковать, превратив эти представления в «свой собственный опыт». И, соответственно, если мы хотим сделать такую вот оцифрованную копию устройства нашей реальности внутри компьютера (насколько это будет возможно), нам нужно отталкиваться от того, как мы устроены, а для этого придётся копнуть немного поглубже, чем обычно.
![image](https://habrastorage.org/files/eb0/98f/6a4/eb098f6a4cdd48d785527efb2d263a5d.jpg)
На изображении представлен, только очень приблизительно, отдельный составной объект в базе данных и множество образуемых прямых и косвенных взаимодействий между объектами.
![image](https://habrastorage.org/files/b08/4ad/20a/b084ad20ad014aa69b6641413c41da04.jpg)
По мере заполнения базы данных объектов и взаимодействий, конфигурации, схожие по определённым критериям, образуют некие «конгломераты», так, рыба, живущая в воде и капли росы, образующиеся в процессе конденсации водяного пара, входят в конгломерат: Водная стихия. Это всё только для примера, ну и немного для размышлений.
![image](https://habrastorage.org/files/2d0/083/0cb/2d00830cb2854e00be1fe2800c3f6b95.jpg)
Дальше речь пойдёт о том, для чего составляется такая база данных объектов и их взаимодействий, и как с этим всем работать.
Вообще, сама база данных представляет из себя «массив из массивов в массиве», а глобально пока подразделяется на два направления:
1) Объекты;
2) Действия.
Или ещё можно сказать — на существительные и глаголы — того, кто делает и на тот процесс, который совершается.
Как я уже сказал, все субъекты базы данных — имеют составную природу, т.е. несмотря на всю сложность и иллюзорную целостность, их можно разбить на меньшие составляющие (за исключением некоторых самых фундаментальных проявлений, за рамки которых мы не собираемся выходить), а в таком «разборном» виде, представить и реализовать их намного проще. Так, составной объект «Фруктовый салат» можно представить как сборник, состоящий из яблока, банана, апельсина, сливок и тарелки, в которой продукт готовится, и далее по определённо-заданному алгоритму уже сделать из этого салат. Всё же это проще, чем каким-то образом пытаться моделировать салат, не углубляясь во входящие в него ингредиенты. Всё же глобальная идея заключается в том, что пользователь сможет взять ложку и попробовать этот виртуальный салат, а для этого нужно «описывать» каждый объект и все возможные связи его с другими объектами этой базы данных виртуальной реальности… Сложно, долго, но возможно.
Далее, для примера я наобум взял направление на алгоритмы реализации полёта птицы, так что поговорим об этом.
![image](https://habrastorage.org/files/28b/cf5/49e/28bcf549e6c44169a344ed6a183cc981.jpg)
Действие отличается от составного объекта тем, что его проявление, в отличие от возможности проявления отдельного объекта — не возможно, потому что, как говорится, речь вести не о чем. Ну полёт, да полёт и что дальше… Пока нет того, кто летит — действий нет, некому их совершать. А как только появляется какое-то «существительное», — так оно сразу норовит что-то сделать, да ещё обрастёт по дороге кучей эпитетов — какой красивый полёт, небо голубое и солнышко ясное…
![image](https://habrastorage.org/files/fc0/346/d8b/fc0346d8bd1a4e848af5280537069033.jpg)
Напоследок я оставил самое интересное, — это то, как мы будем работать с этой постоянно пополняемой базой данных объектов и взаимодействий, это то, что мы ласково называем «4D Программированием». Хотим реализовать то чувство, когда неосознанный компьютер начинает понимать тебя с полу-слова… По мере его «обучения», т.е. пополнения и обновления базы, анализируя предложение-запрос пользователя, вычленяя из него объекты, детали и действия между ними, подставляя и сопоставляя нужное из своей базы, выполнять нужный пользователю алгоритм.
![image](https://habrastorage.org/files/013/1f0/fe6/0131f0fe61364f2cab3bd3ab7116781a.jpg)
В следующей части я продолжу рассказ, планирую сделать ещё более глубокий срез в детали проекта. Спасибо за внимание и всё получится!
Первая вступительная часть: Погружение в Глубину: как сделать качественный проект без миллионов в кармане и почему не нужно бояться «долгостроев»
![image](https://habrastorage.org/files/a09/110/a83/a09110a835574e5fb1db3ba2634748eb.jpg)
А начать я хотел бы с основ, как известно, фундамент — самое главное в строительстве дома. Так что расслабьтесь от кода, пока мы с вами сфокусируемся на чертежах и планах будущего строения :)
Фундамент проекта, который мы делаем, заключается в создании некой «Базы данных представлений», как я её называю, а если проще — то базы данных объектов и взаимодействий между ними.
С моей точки зрения, с этого логично начинать, но пока что, за исключением нескольких проектов, сделать это никто не пытается, настолько, насколько глубоко хотим мы. А хотим мы, грубо говоря, перенести базу данных образов, объектов и взаимодействий из нашей реальности в ту самую маленькую коробочку, под названием компьютер. Звучит шизофренично? Да это только на первый взгляд! :)
Мысли о невозможности реализации такого масштабного проекта, на самом деле кроются в ограниченности нашего мышления, боязни начать делать то, чего ещё никто не делал и немножко в ограниченности доступных компьютерных ресурсов на данный момент, последнее, к счастью, — решается.
Тем, кто сразу отрицает на корню возможность реализации такого проекта, я бы предложил читать далее просто как сказку, там же всё возможно. Остальным предлагаю вникнуть в картинки настолько глубоко, насколько получится, потому что на наш взгляд, мы как люди, а точнее наш мозг именно так и устроен, как мы пытаемся сделать, и отрисовка реальности происходит на основе той постоянно пополняемой базы данных образов, логических цепочек и представлений обо всём вокруг, что мы успели накопить и распаковать, превратив эти представления в «свой собственный опыт». И, соответственно, если мы хотим сделать такую вот оцифрованную копию устройства нашей реальности внутри компьютера (насколько это будет возможно), нам нужно отталкиваться от того, как мы устроены, а для этого придётся копнуть немного поглубже, чем обычно.
![image](https://habrastorage.org/files/eb0/98f/6a4/eb098f6a4cdd48d785527efb2d263a5d.jpg)
На изображении представлен, только очень приблизительно, отдельный составной объект в базе данных и множество образуемых прямых и косвенных взаимодействий между объектами.
![image](https://habrastorage.org/files/b08/4ad/20a/b084ad20ad014aa69b6641413c41da04.jpg)
По мере заполнения базы данных объектов и взаимодействий, конфигурации, схожие по определённым критериям, образуют некие «конгломераты», так, рыба, живущая в воде и капли росы, образующиеся в процессе конденсации водяного пара, входят в конгломерат: Водная стихия. Это всё только для примера, ну и немного для размышлений.
![image](https://habrastorage.org/files/2d0/083/0cb/2d00830cb2854e00be1fe2800c3f6b95.jpg)
Дальше речь пойдёт о том, для чего составляется такая база данных объектов и их взаимодействий, и как с этим всем работать.
Вообще, сама база данных представляет из себя «массив из массивов в массиве», а глобально пока подразделяется на два направления:
1) Объекты;
2) Действия.
Или ещё можно сказать — на существительные и глаголы — того, кто делает и на тот процесс, который совершается.
Как я уже сказал, все субъекты базы данных — имеют составную природу, т.е. несмотря на всю сложность и иллюзорную целостность, их можно разбить на меньшие составляющие (за исключением некоторых самых фундаментальных проявлений, за рамки которых мы не собираемся выходить), а в таком «разборном» виде, представить и реализовать их намного проще. Так, составной объект «Фруктовый салат» можно представить как сборник, состоящий из яблока, банана, апельсина, сливок и тарелки, в которой продукт готовится, и далее по определённо-заданному алгоритму уже сделать из этого салат. Всё же это проще, чем каким-то образом пытаться моделировать салат, не углубляясь во входящие в него ингредиенты. Всё же глобальная идея заключается в том, что пользователь сможет взять ложку и попробовать этот виртуальный салат, а для этого нужно «описывать» каждый объект и все возможные связи его с другими объектами этой базы данных виртуальной реальности… Сложно, долго, но возможно.
О птичках
Далее, для примера я наобум взял направление на алгоритмы реализации полёта птицы, так что поговорим об этом.
![image](https://habrastorage.org/files/28b/cf5/49e/28bcf549e6c44169a344ed6a183cc981.jpg)
Действие отличается от составного объекта тем, что его проявление, в отличие от возможности проявления отдельного объекта — не возможно, потому что, как говорится, речь вести не о чем. Ну полёт, да полёт и что дальше… Пока нет того, кто летит — действий нет, некому их совершать. А как только появляется какое-то «существительное», — так оно сразу норовит что-то сделать, да ещё обрастёт по дороге кучей эпитетов — какой красивый полёт, небо голубое и солнышко ясное…
![image](https://habrastorage.org/files/fc0/346/d8b/fc0346d8bd1a4e848af5280537069033.jpg)
Напоследок я оставил самое интересное, — это то, как мы будем работать с этой постоянно пополняемой базой данных объектов и взаимодействий, это то, что мы ласково называем «4D Программированием». Хотим реализовать то чувство, когда неосознанный компьютер начинает понимать тебя с полу-слова… По мере его «обучения», т.е. пополнения и обновления базы, анализируя предложение-запрос пользователя, вычленяя из него объекты, детали и действия между ними, подставляя и сопоставляя нужное из своей базы, выполнять нужный пользователю алгоритм.
![image](https://habrastorage.org/files/013/1f0/fe6/0131f0fe61364f2cab3bd3ab7116781a.jpg)
В следующей части я продолжу рассказ, планирую сделать ещё более глубокий срез в детали проекта. Спасибо за внимание и всё получится!
Первая вступительная часть: Погружение в Глубину: как сделать качественный проект без миллионов в кармане и почему не нужно бояться «долгостроев»
Поделиться с друзьями