Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/1: Рейтинг темы: голосов - 1, средняя оценка - 5.00
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3

Совместное создание игры

08.01.2025, 12:45. Показов 52770. Ответов 942
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
 Комментарий администратора 
Обсуждение вынесено из темы Ищу человека для совместного изучения программирования


Цитата Сообщение от Royal_X Посмотреть сообщение
Вот на моем неигровом ноуте последний UE без проблем запускается и не тормозит даже.
ок.
если ТС готов варганить со мной сапера, то я сделаю ещё одну попытку его(пожалуй 4 версию) установить и испытать.

собсно что нужно: формально отображать некие графические модели на экране в нужном его месте нужного масштаба,
для теста сойдут спрайты - а потом можно и анимированные модели голых девочек,
на усмотрение геймдиза))

и больше ничаво.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.01.2025, 12:45
Ответы с готовыми решениями:

Для чего создан язык С++?
Для чего создан язык С++????

создан массив
создан массив автовладельцев, для каждого известны Ф.И.О., номер, адрес...,Выяснить есть ли автовладельцы у которых имеются больше 1-ой...

Теория игр, массивы
Есть задание (прикрепил его в виде файла к сообщению). Есть решение для 12-ого варианта на BORLANDC, у меня 2-ой. Я изменил в начале...

942
 Аватар для CoderHuligan
1754 / 1020 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
05.02.2025, 14:06
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от XLAT Посмотреть сообщение
вот поэтому нам понадобятся контракты,
но
если конешно, вы будете согласны, чтобы ваш код им соответствовал...
Сперва надо получить код. А контракты потом уже присобачить к реальной кодовой базе. Или опять начинать с эфемерных вещей? Телега впереди лошади? Когда есть конкретные задачи, их можно решить, пускай разными способами, но решение будет. У меня в голове решение созрело, можно приступать. Затык был как отделить событийную систему виндовс от кода приложения, не смешивать все в одну кучу, как сделали в оригинальной игре. Был такой программист Чарльз Мур, который создал язык Forth. На вопрос - когда вы приступаете к программированию с чего вы начинаете: с проектирования сверху или снизу? Он ответил: когда мне нужно вывести круг на экран, я начинаю с программирования круга.
Ну вот как то так.
1
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
05.02.2025, 14:21  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
На вопрос - когда вы приступаете к программированию с чего вы начинаете: с проектирования сверху или снизу? Он ответил: когда мне нужно вывести круг на экран, я начинаю с программирования круга.
похоже это на снизу,
сверху - этому классу пофик что выводить - он выводит всё.
0
05.02.2025, 14:54

Не по теме:

Цитата Сообщение от Royal_X Посмотреть сообщение
Если тебе интересна реальная причина, могу написать в личку.
Мне напишите. Очень интересно узнать "реальную причину".

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

0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,180
05.02.2025, 15:21
XLAT, слышал, как некоторые говорят, что они выбирают UE, потому что там С++. Мол они не рассматривают Unity, Godot и прочие движки, дескать там код придется писать на "медленных" языках.
Так вот, я сейчас опишу, как язык почти никак не влияет на FPS. И что С++ точно не нужно выбирать, веря в мифы, что игра прям начнет выдавать 120 FPS) Тем не менее, я не против С++ в разработке игр, когда действительно существуют реальные причины его использовать. Также само я не против UE, когда существуют разумные причины его использовать.

Итак, я вчера создал 3D игру на Godot, где всё генерируется через код. А именно, генерируется лабиринт, который нужно пройти. Так вот, я выбрал самый красивый в визуальном плане алгоритм для генерации, хотя существуют более быстрые алгоритмы, но которые выдают не очень красивые результаты. Когда выбирал нужный алгоритм для генерации, то я в первую очередь смотрел на результат, а не на временную сложность алгоритму. Также я смотрел на универсальность. Например, выбранной мной относительно "медленный" алгоритм генерирует лабиринты произвольной формы. Еще нужен был такой алгоритм, в который я бы быстро вник, учитывая, что код мне пришлось писать самому.
И вот почему гонка за самым быстрым алгоритмом или за самым быстром языком в игровой индустрии не катит:

Первая версия игры очень тормозила при генерации лабиринта на размерах выше 100х100. FPS был крайне низким, сам лабиринт генерировался очень долго, а игра вообще не реагировала во время генерации.
Виноват ли в этом GDScript, или из-за того ли это, что я выбрал не самый быстрый алгоритм для генерации лабиринта? Естественно, НЕТ.
Я засек время и понял, что на GDScript, даже лабиринт 200х200 генерируется за миллисекунды. Т.е. все это опровергает ахинею, что С++ это средство для повышения FPS.
Проблема было совсем в ином. А именно нужно было правильно оптимизировать игру, учитывая, что для лабиринта 100х100 в игру добавляется програмно 20 000 объектов - прямоугольных параллелепипедов, каждый еще с проверкой на столкновения и с материалом. Короче, оптимизировав игру, теперь лабиринт рисуется в игре за полторы сек, FPS не падает, основной поток не блокируется. Игрок даже не замечает, что фоново рисуется лабиринт. Я даже добавил шкалу, которая показывает прогресс добавления лабиринта на сцену.
1
05.02.2025, 16:17
 Комментарий администратора 
Уважаемые форумчане!
Напоминаю вам первую часть правила 1.1
1.1. Форум предназначен для обсуждения вопросов IT-тематики и смежных с ней.
У нас есть курилки и прочие места для обсуждений обо всём.

Royal_X, пожалуйста, перечитайте правила форума
https://www.cyberforum.ru/announcement.php?a=3
В последнее время вы систематически их нарушаете.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,180
05.02.2025, 16:20
CoderHuligan, XLAT, удачи вам ребята в вашем деле, я уверен, что вы достигнете своих целей.
Было приятно с вами кодить.
Прощайте.
1
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
05.02.2025, 18:56
Цитата Сообщение от Royal_X Посмотреть сообщение
Мол они не рассматривают Unity
Верите или нет, но у меня как-то всегда совпадает, что если игра тормозит и жрет как не в себя, то она обязательно на Unity. Не знаю почему так.
0
 Аватар для CoderHuligan
1754 / 1020 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
05.02.2025, 20:07
Цитата Сообщение от XLAT Посмотреть сообщение
похоже это на снизу
Именно снизу. Чтобы что-то вывести надо уже иметь это что-то. Если писать сверху, то обязательно создание заглушек - пустых функций, которые определяются уже потом. Такой подход часто подвергался критике. Хотя, на мой взгляд, нужно нечто среднее. Проектировать сверху, а программировать снизу..
Цитата Сообщение от Royal_X Посмотреть сообщение
удачи вам ребята в вашем деле
Спасибо, Royal_X, за добрые слова. "Все проходит, и это пройдет".
0
06.02.2025, 20:04
 Комментарий модератора 
Господа, прекращаем флуд, переход на личности и обсуждения политики форума
0
 Аватар для Наталья8
640 / 404 / 68
Регистрация: 09.03.2016
Сообщений: 4,430
07.02.2025, 14:01
Цитата Сообщение от Croessmah Посмотреть сообщение
если игра тормозит и жрет как не в себя
Графика гавно, сделано через зад, мышка плохо слушаеться,
и бабло просят. Типа миры продают.
stalker лучше.
0
 Аватар для Наталья8
640 / 404 / 68
Регистрация: 09.03.2016
Сообщений: 4,430
07.02.2025, 14:33
final_file(1).mp4
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,180
10.02.2025, 01:31
XLAT, интересная идея

Кликните здесь для просмотра всего текста
1
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
10.02.2025, 06:08  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
интересная идея
уже теплее к просветлению - оказывается миром правят идеи: хорошие и, увы, плохие)

писать код может любой школьник, а вот писать его согласно высшим идеям может уже не каждый.

я вот вчера не писал код - я вчера размышлял об идеях-столпах ммо-сервера...

среди множества прочего, это идеи оптимизации, применительно к <SFML/Network.hpp>:
- идентификация пользователя которому принадлежит рандомно пришедший пакет.
- чем должен быть его id?
- очень просто и банально - адресом на структуру с его данными.
- ЭТО ГЕНИАЛЬНАЯ ИДЕЯ! )) в плане местной оптимизации.

Добавлено через 15 минут
ха-ха,
вижу как тянутся лапы прикрыть эту тему))

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

у толстолобиков есть проблема - они религиозно уверены, что идеи берутся из чистой логики, но это не так ...
0
 Аватар для CoderHuligan
1754 / 1020 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
10.02.2025, 09:49
Цитата Сообщение от XLAT Посмотреть сообщение
оказывается миром правят идеи: хорошие и, увы, плохие)
И еще мало кто желает самостоятельно рисовать картинки..
Цитата Сообщение от XLAT Посмотреть сообщение
вижу как тянутся лапы прикрыть эту тему))
Тема не в том разделе, от этого все проблемы..
0
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
11.02.2025, 05:52  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
это идеи оптимизации
ага, поразмышлял над идеями безопасности...
чем должен быть его id?
оказалось,
что любой id есть зло - id не нужен...

и банальная и простая идея: соединение есть объект в памяти - реальный материальный объект.
пока он там существует - любого клиента можно по нему сличить...

а в случае восстановления разорванного соединения сличать только по паре ник/пароль...
0
 Аватар для CoderHuligan
1754 / 1020 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
11.02.2025, 13:37
Цитата Сообщение от XLAT Посмотреть сообщение
что любой id есть зло - id не нужен...
А как отличить один объект от другого? Может в каком-то конкретном случае id избыточен, но в целом это хорошая идея. В win api по id определяют окна, а также владельцев окон, а как иначе? По указателю - проблемы с безопасностью сразу вылезут. Единственный безопасный вариант это по идентификационному хендлу.
0
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
11.02.2025, 14:03  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А как отличить один объект от другого?
1.
удерживаю себя растечься мыслью по онтологии основания кодирования,
но если кратко: так называемый реверс-инженеринг ваще не гарантирует вскрытие самих идей,
которые были использованы при кодировании.
почему тут или там сделано так то - потому что никак не объясняет почему в этом месте нельзя было сделать по другому.

2.
соединение есть объект
ну, да, конешно же)
этот обжект, который сокет может находиться в следующих состояниях:
C++
1
2
3
4
enum Status {
  Done, NotReady, Partial, Disconnected,
  Error
};
что тут интересно и важно:
если Disconnected или тп., то собсно, соединения то и нет, хотя объект то есть))

3.
мой ник это про матричные вычисления - адресация по содержанию...

4.
как это работает в рассматриваемом контексте(кратко):
- сокет(оно же соединение) находится внутри структуры клиента, например так:
C++
1
2
3
4
5
6
7
8
9
10
struct  Client
{       Client()
            : socket(std::make_unique<sf::TcpSocket>())
            , uid   ((sf::Uint64)socket.get())
        {
        }
 
    std::unique_ptr<sf::TcpSocket> socket;
    const sf::Uint64                  uid; /// Not used!
};
- при установке соединения эти клиенты скирдуются в отдельный контейнер, например вот этот:
C++
1
std::list<std::unique_ptr<Client>> clients;
- собсно сам сокет помещается в специальный отстойник.
- далее в цикле делается пробег по всем clients и
- проверяется на текущее состояние socket'а, принадлежащего отдельно взятому клиенту.
- если в сокете пришла депеша с дальнего клиента, то делается обработка по полям структуры Client
- при необходимости тут же можно отослать ответ на принятую депешу.
- вот вся теория.

5.
Цитата Сообщение от CoderHuligan Посмотреть сообщение
что инкапсуляция тем выше, чем меньше функций вынуждено обитать в классе. Бред?
вот маленький пример о том о чем речь:
давеча Рояль_X изъявил желание устанавливать кол-во бомб:
но для этого нужно было бы добавить такой метод,
но так как у мя в приоритетах выбор размера поля,
то кол-во бомб должно быть согласованно с этим размером.

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

итого, процедура установки бомб вносила бы больше путаницы, чем порядка!

ещё раз: размер поля и кол-во бомб это взаимосвязанные величины:
изменили размер - изменили кол-во бомб.
НО! юзвери это глупые животные, кто из них будет так заморачиваться? Рояль_Х?
но он не юзер.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
а потому, что не понимаю, зачем делать ТАК
и снова тут метафизика из пространства идей...

если просто:
- в С++ большое легаси из Си библиотек.
- все юзают их - и нико не потеет.
- опять же интерфейсы...
- совместная разработка это договориться об интерфейсах!
- пишите как угодно, но чтобы соответствовало договоренным интерфейсам.

ну, пока мы тут ещё ни разу не писали совместный код.

проверка идеи с трубами Рояля_X не в счет, потому что тамошний уровень абстракции
настолько был высок, что вылетел за пределы С++ и остановился на уровне "ВСЁ ЕСТЬ СТРОКИ"))
и заодно "ПРОЩАЙ КРОСС!"(т.е. юзать такое в продакшене без особой фантазии просто никак)

хотя и можно назвать это неким положительным результатом)
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,180
11.02.2025, 16:22
Цитата Сообщение от XLAT Посмотреть сообщение
остановился на уровне "ВСЁ ЕСТЬ СТРОКИ"
вообще-то по трубам всегда текут байты, а не строки или что-то другое. Это ты уже потом превращаешь байты в символы...

Добавлено через 4 минуты
Цитата Сообщение от XLAT Посмотреть сообщение
т.е. нужно либо усложнить код, чтобы кол-во бомб, вдруг, не стало больше, чем кол-во клеток.
но зачем? если можно просто: установить это кол-во в процентом отношении к размеру поля.
ты уже усложнил код настолько, насколько можно было и сейчас рассказываешь байки, что выставление бомб могло что-то там усложнить
Да и одно другому не мешает. Я же сказал, как делать: если не выставлено вручную количество бомб, то значит берется в процентном соотношении.
Но дать возможность выставить бомбы это важно. Например, кто-то захочет создать классического сапера, а там для каждого размера поля свои количества бомб.
0
 Аватар для CoderHuligan
1754 / 1020 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
11.02.2025, 16:46
Цитата Сообщение от XLAT Посмотреть сообщение
находится внутри структуры клиента, например так:
Спасибо. Почитал про умные указатели. Теперь в курсе.
Сейчас перевел свой проект с VS на CB. В нем редактор приятней. Короче форкнул проект. Быстро прототип сделать надо. Как я привык. Окошко выводит, диалоги работают, даже хелп выводит, причем с прокруткой. Осталось логику сделать.

Добавлено через 4 минуты
Еще надо сделать функцию масштабирования окна со всеми потрохами. Как-то это более поддерживаемо выглядит, чем через dpi. В менюшке сделать выбор масштаба x1,5, x2..
1
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
11.02.2025, 18:40  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
всегда текут байты
это как попасть пальцем в небо.
Code
1
2
- У тебя там в контейнере какие данные?
- Разумеется, у меня там байты!
Цитата Сообщение от Royal_X Посмотреть сообщение
ты уже усложнил код настолько
давай я для тебя проще объясню идею Майерса про инкапсуляцию:
"ЧЕМ ПРОЩЕ ИНТЕРФЕЙС, ТЕМ ЛУЧШЕ ИНКАПСУЛЯЦИЯ"

предвижу следующий вопрос: "а зачем нужна инкапсуляция?"

ну, нормальный вопрос - нормальный для любого сишкокодера,
но сишкокодеры яростно сопротивляются пониманию онной, как не объясняй)
но стоит им только понять зачем она нужна, они сразу же перестают быть сишкокодерами.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.02.2025, 18:40

Решение матричных игр. Есть у кого такая программа написанная уже...
Требуется программа по решению матричных игр... С выбором размера матрицы и выдачей решения... Может кто смогёт такую сбатцать?

Запуск приложений(старых игр) в оконном режиме
День добрый, подскажите, хотелось бы реализовать свое желание запуска старых игр windo`вых(типа StarCraft) в оконном режиме, с чего начать,...

Алгоритм календаря игр (например в футболе)
необходимо составить календарь футбольных матчей, допустим есть 6 команд char *teams = {&quot;TEAM A&quot;,&quot;TEAM B&quot;,&quot;TEAM...

Движок для игр
Всем привет!!!, хотел узнать возможно ли создать движок на C++ чтобы экспортировать модели из 3ds max а после в самом движке можно было...

Выбор IDE для создания 2D игр
Здравствуйте. Задача сделать пака 2ух – мерные драчки загружая в проект анимацию-как удар(ы) и реакция на удар...(лучше всего секвенцию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
680
Закрытая тема Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru