Пятница, 29 Марта 2024, 18:04

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Форум игроделов » Программирование » C/C++ » Хакерский движок для линукс
Хакерский движок для линукс
afqДата: Среда, 15 Мая 2019, 23:56 | Сообщение # 1
Разработчик
Сейчас нет на сайте
Делаю хакерскую игру. Теперь можно добавлять элементы влёгкую. Также создавать хосты, соединять их. И всё это пингуется и трассируется. Я даже подумал что если реализую всё что хотел, то может получиться неплохой себе framework или движок. В котором для своей игры можно создать нужное количество компьютеров, создать сколько надо провайдеров интернет. Объединить всё в сеть. Сделать задания. Когда я абстрагировал всё, стало теперь легче добавлять всё. Вот пример как я это делаю.

Всё становится очень просто. Так можно несколько частей выпустить если фантазии хватит. Пока же надо над одной версией потрудиться. А вы как думаете, стоит ли открыть код в будущем, чтобы каждый мог создать свои уровни?


Сообщение отредактировал afq - Четверг, 16 Мая 2019, 04:47
drcrackДата: Четверг, 16 Мая 2019, 04:33 | Сообщение # 2
старожил
Сейчас нет на сайте
Цитата
обстрагировал

проверку орфографии в линукс пока не завезли, да? :D
afqДата: Четверг, 16 Мая 2019, 04:47 | Сообщение # 3
Разработчик
Сейчас нет на сайте
drcrack, у меня английская версия ubuntu сейчас стоит. Орфография русского языка отключена.

Добавлено (16 Мая 2019, 05:08)
---------------------------------------------

drcrackДата: Четверг, 16 Мая 2019, 09:27 | Сообщение # 4
старожил
Сейчас нет на сайте
Цитата
А вы как думаете, стоит ли открыть код в будущем, чтобы каждый мог создать свои уровни?

игру на с++ под линукс с русскими комментами? нет, не стоит
(хотя если ты любишь разочарования, можешь попробовать)
TimKruzДата: Четверг, 16 Мая 2019, 09:44 | Сообщение # 5
старожил
Сейчас нет на сайте
Цитата afq ()
А вы как думаете, стоит ли открыть код в будущем, чтобы каждый мог создать свои уровни?

Эммм, а это разве не тот же самый код, который ты около недели назад выложил на GitHub?

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

Что я предлагаю? Самое простое – это хранить в оперативной памяти структуру файловой системы, в виде имён создаваемых каталогов, файлов, связями между ними и их содержимым (если требуется), и в оперативной же памяти это всё редактировать. А уж когда игрок запрашивает сохранение или выходит из игры – тогда вся эта информация записывается на диск. Тебе ведь не нужна полноценная файловая система, ведь так? Тебе нужна только симуляция этой системы, пригодная для игровых целей.

Я это вижу так:
– файл – это запись (в C++ это struct?) со строкой-именем и строкой-содержимым (или массивом строк);
– каталог – это похожая запись со строкой-именем и массивом указателей, которые могут ссылаться на каталоги и файлы.
При этом, если каталог будет содержать указатель на родительский каталог, а файл – на тот каталог, в котором он лежит, то переходы по этой "файловой системе" можно будет делать, просто перезаписывая текущий указатель на новый исходя из того, на что он указывает и хотим ли мы двигаться вверх или вниз. В общем, банальная древовидная структура...

Могу попробовать на Delphi сделать пример кода... Компилятора C++ под рукой вроде нет)

Хотя не, с записью указателей на диск не знаю, что делать. Ну, я бы воспользовался динамическими массивами или TList (ссылочный список с простыми индексами как у массивов и лёгким управлением), но я не знаю, какие аналоги есть в C++...

Цитата drcrack ()
игру на с++ под линукс с русскими комментами? нет, не стоит
(хотя если ты любишь разочарования, можешь попробовать)

Разочарование от чего? Что никто не смотрит или что смотрят и ругают?




Сообщение отредактировал TimKruz - Четверг, 16 Мая 2019, 10:00
afqДата: Четверг, 16 Мая 2019, 14:30 | Сообщение # 6
Разработчик
Сейчас нет на сайте
TimKruz, да я уже давно сделал файловую систему в программе без hdd. Я вроде уже где-то писал об этом. Можно даже переходить на такой каталог, и как ты думаешь куда перейдёшь?
Код

cd /home/zex
cd ../../../../../../../../../../../

Добавлено (16 Мая 2019, 14:32)
---------------------------------------------
Я же снимок предоставил в этой теме, как легко теперь можно добавить новые элементы и компьютеры в сети.

Добавлено (16 Мая 2019, 14:37)
---------------------------------------------
TimKruz, ну ты попробуй, сделай файловую систему. Из операций с файловой системой у меня реализовано. Создание каталога, создание файла, заполнение файла данными. Потом покажешь что получилось.

Ты кстати новичок или профессионал в программировании?

Добавлено (16 Мая 2019, 14:38)
---------------------------------------------
drcrack, а ты новичек или профессионал в программировании?

Добавлено (16 Мая 2019, 15:15)
---------------------------------------------
TimKruz, а тот пример, который я выложил на github, так это на скорую руку сделано. Чтобы показать какая будет игра. Исходя из сделанной файловой системы я смог сделать файловую систему программно. Так что одно другое дополнило.

drcrackДата: Четверг, 16 Мая 2019, 15:38 | Сообщение # 7
старожил
Сейчас нет на сайте
Цитата
ну ты попробуй, сделай файловую систему. Из операций с файловой системой у меня реализовано. Создание каталога, создание файла, заполнение файла данными. Потом покажешь что получилось.

честно говоря это делается за час максимум, с перерывом на чай


Сообщение отредактировал drcrack - Четверг, 16 Мая 2019, 15:39
afqДата: Четверг, 16 Мая 2019, 15:48 | Сообщение # 8
Разработчик
Сейчас нет на сайте
drcrack, вижу ты готов это доказать? Или ты мечтаешь что можешь за час?
martukДата: Четверг, 16 Мая 2019, 16:50 | Сообщение # 9
заслуженный участник
Сейчас нет на сайте
afq, Соглашусь с drcrack. Это довольно элементарная задача. Не знаю уж как ты там реализовывал, но в c++ такое оформить будет проще простого.
drcrackДата: Четверг, 16 Мая 2019, 16:50 | Сообщение # 10
старожил
Сейчас нет на сайте
если тебе эта задача кажется сложной, попробуй более подходящие для нее языки, а не с++
martukДата: Четверг, 16 Мая 2019, 16:51 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Но я сам бы сделал не за час а за три хотя бы, потому что я черепаха
afqДата: Четверг, 16 Мая 2019, 16:56 | Сообщение # 12
Разработчик
Сейчас нет на сайте
drcrack, а я думал что ты напишешь. Как из этого вытекает что я должен доказывать свои слова. Я ведь просто пишу о чем думаю.

Мне это проще сделать на c++ или си, чем на другом языке.

Добавлено (16 Мая 2019, 16:58)
---------------------------------------------
martuk, я тоже сначала думал что это не сложно будет сделать. Но не получилось с первого раза. Пришлось делать файловую систему и драйвер к ней. И уже из этого опыта я смог написать без файловой системы.

Добавлено (16 Мая 2019, 16:59)
---------------------------------------------
martuk, да тем более эта тема уже немного разжевана, так что тебе бы было легче написать. Но что напишешь? А на чём бы ты писал? На каком языке?

tdukДата: Четверг, 16 Мая 2019, 17:07 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
Интересный проект) Буду ждать релиза)

martukДата: Четверг, 16 Мая 2019, 17:59 | Сообщение # 14
заслуженный участник
Сейчас нет на сайте
afq, В начале этого года я писал что то типа виртуальной файловой системы. По факту это была древовидная система папок и файлов.
Работая на c++, я использовал структуры, вектора и указатели + модуль для графического представления дерева.
Визуально оформил как у редактора Atom.
Вот и результат:


Сообщение отредактировал martuk - Четверг, 16 Мая 2019, 18:01
afqДата: Четверг, 16 Мая 2019, 18:05 | Сообщение # 15
Разработчик
Сейчас нет на сайте
martuk, о класс.

Добавлено (16 Мая 2019, 18:06)
---------------------------------------------
martuk, а что за модуль использовал? В qt чтоли?

martukДата: Четверг, 16 Мая 2019, 18:08 | Сообщение # 16
заслуженный участник
Сейчас нет на сайте
Вот весь класс этого добра:

Но сразу оговорюсь, что я тут допустил серьезную ошибку. Функции работы с папками и файлами я вынес в отдельный модуль. А в этом классе остались только базовые вещи.

Добавлено (16 Мая 2019, 18:11)
---------------------------------------------

Цитата afq ()
В qt чтоли?

Не, мне нужна была 3d, я использовал Urho3d, там как раз и UI система была, не нужно было велосипедить.

Добавлено (16 Мая 2019, 18:17)
---------------------------------------------
В итоге вот такой вот визуализатор смастерил:

afqДата: Четверг, 16 Мая 2019, 18:41 | Сообщение # 17
Разработчик
Сейчас нет на сайте
martuk, а как ты линии снизу добавил? Я всё думал, но какой правильный способ? Ты рисовал линии в радиусе 0.0 - 1.0 или как то по другому?
martukДата: Четверг, 16 Мая 2019, 20:33 | Сообщение # 18
заслуженный участник
Сейчас нет на сайте
afq, сетка - это обычный GL_LINES
Размер сетки - 1.0


Сообщение отредактировал martuk - Четверг, 16 Мая 2019, 23:04
JackNazaryanДата: Пятница, 17 Мая 2019, 03:13 | Сообщение # 19
старожил
Сейчас нет на сайте
Захотелось сделать виртуальную файловую систему на PHP с сохранением состояния в JSON-файл, а потом вспомнил, что на GcUp слишком адекватная аудитория, чтобы слушать такие идеи :D

Всякие ../../../../ несложно обрабатывать, если написать нормальный парсер-преобразователь, остальное уже дело вкуса.
afqДата: Пятница, 17 Мая 2019, 03:26 | Сообщение # 20
Разработчик
Сейчас нет на сайте
Цитата
Всякие ../../../../ несложно обрабатывать, если написать нормальный парсер-преобразователь, остальное уже дело вкуса.

JackNazaryan, у меня например как в реале. Каждый каталог указывает на своего родителя. А root каталог указывает сам на себя. По этому сколько не переходи, будет всё равно в root переходить.
Форум игроделов » Программирование » C/C++ » Хакерский движок для линукс
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг