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

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

08.01.2025, 12:45. Показов 45709. Ответов 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
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6291 / 3015 / 1051
Регистрация: 01.06.2021
Сообщений: 11,409
11.02.2025, 20:40
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от CoderHuligan Посмотреть сообщение
прога не тащит с собой никаких dll
ну вот попробуй написать на mingw64 g++ и посмотри на размер. Короче, ты мог и ничего не скачать, а писать на корявом mingw64. Если честно, они берут либы dx, как и media foundation и все прочее, из проекта wine. Глюков там много и порой не соответствует доку, но зато качать ничего не нужно, если ты ставил mingw64

Вот у меня по пути msys64\ucrt64\lib лежат все либы dx от 8 до 12 версии

Та же история, как и с Win SDK - оригинальная весит гигабайты, а mingw64 сотни мегабайт... Но зато готовая прога на оригинальной весит мало, ибо зависимости на винде, а вот написанная на mingw64 весит больше.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
11.02.2025, 20:42  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
прога не тащит с собой никаких dll.
это спорно,
прочувствовать такую ситуацию можно, когда придешь с такой прогой к соседу...
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6291 / 3015 / 1051
Регистрация: 01.06.2021
Сообщений: 11,409
11.02.2025, 20:52
XLAT, я поэтому всегда говорю - пиши на JS, а гуй на HTML+CSS. В итоге прога работает даже в браузере Nokia.
JS очень быстрый язык. Я раньше сам не верил, пока не протестировал. Весь мир держится на инете, а инет на JS движках, поэтому их хорошо оптимизируют.

Добавлено через 6 минут
Цитата Сообщение от XLAT Посмотреть сообщение
то захочется движок писать, а это самоубийство
верно
раньше некоторые крупные компании писали свои движки, но сейчас даже они переходят на готовые
дураками будем, если станем движок писать

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

Пример - движок Redot. Годот чёт спалился на woke, тут и их сообщество откололось и создали клон Redot. Правда, я плевать хотел на политику, юзаю лучший, а годот он лучше редота, т.к. раньше получает обновления.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6291 / 3015 / 1051
Регистрация: 01.06.2021
Сообщений: 11,409
11.02.2025, 23:22
XLAT, проверишь игру в архиве. Всегда использовал в Godot режим OpenGL, а сейчас выбрал DX и Vulkan.
Вложения
Тип файла: 7z Tetromino.7z (18.32 Мб, 17 просмотров)
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
12.02.2025, 01:58
Цитата Сообщение от Royal_X Посмотреть сообщение
зачем нужен final?
Защита от наследования:Использование final обеспечивает защиту от создания производных классов, что может быть полезно, когда дополнительное наследование нежелательно.
Стабильность интерфейса:final при использовании с виртуальными функциями обеспечивает стабильность интерфейса базового класса, предотвращая изменение его поведения в производных классах.
Случай второй. дает возможность наследоваться, для каких то пользовательских целей, но ограничивает в использовании через полиморфизм.
Для чего это может понадобится где то в реальности?
Что бы ответить на этот вопрос, наверное нужна практика написания проприетарных(с закрытым исходным кодом) библиотек(компонентов) и стабильных систем на основе таких классов.
Если есть где то привязка к поведению таких виртуальных функций, которое по задумке должно обязательно происходить.
Если же переопределить виртуальную функцию и убрать это поведение, можно нарушить запланированный ход событий.

Выдумывать пример сам не стал, тебе же нужен реальный.
Но если не понятно о чем я, то чисто для понимания, пример могу написать.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6291 / 3015 / 1051
Регистрация: 01.06.2021
Сообщений: 11,409
12.02.2025, 02:22
SmallEvil, я кажется понял. Если убрать виртуальность, то ломается полиморфизм, поэтому виртуальность оставляем, но с помощью спецификатора final запрещаем переопределение.
Ну ещё можем запретить наследование c класса с помощью final.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
12.02.2025, 06:14  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
с помощью спецификатора final запрещаем переопределение.
Ну ещё можем запретить наследование c класса с помощью final.
я тебе так и написал: кастрюлю нужно накрыть крышкой,
чтобы туда не закинули ингредиент от которого может случиться диарея.

и еще намекнул: что этот вопрос уровня архитектора,
но зачем нам архитектор - мы же пишем ТОЛЬКО простой код помещающийся весь в функцию main ...

а в целом я рад, что ты умеешь гуглить))
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
12.02.2025, 09:24
Цитата Сообщение от XLAT Посмотреть сообщение
то захочется движок писать, а это самоубийство,
До движка еще далеко. И эти движки как бы писались под конкретные игры. Я просто пока подбираюсь к теме. То есть люди когда начинали создавать игры, создавали api под конкретную игру и не считали это самоубийством. Тут как бы хочется посмотреть, как там всё устроено, вот почему я хочу покопаться в справке и примеры разобрать.
Цитата Сообщение от Royal_X Посмотреть сообщение
Короче, ты мог и ничего не скачать, а писать на корявом mingw64.
Ага. Зато в оригинальном sdk куча примеров и справка могучая. Только ради этого стоит ознакомиться. Когда-то давно я уже качал sdk, когда сидел на xp, но что-то там не пошло, примеры которые запускал ломали систему, приходилось перезагружаться. А в этот раз под win 7 все нормально.
Цитата Сообщение от Royal_X Посмотреть сообщение
ну вот попробуй написать на mingw64 g++ и посмотри на размер.
Надо попробовать. Но под gcc в основном юзают open gl, а я там вообще ноль.
Цитата Сообщение от XLAT Посмотреть сообщение
это спорно,
Должно на всех виндах запускаться. По крайней мере от семерки до вин 11.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6291 / 3015 / 1051
Регистрация: 01.06.2021
Сообщений: 11,409
12.02.2025, 19:16
Цитата Сообщение от XLAT Посмотреть сообщение
а в целом я рад, что ты умеешь гуглить))
ну и кто теперь троллит? я ведь тоже разочаровываюсь
Цитата Сообщение от XLAT Посмотреть сообщение
я тебе так и написал
ты написал мне художественный бред и я тебе сразу сказал, что мне нужен конкретный пример из реального кода, а не в общих чертах рассказать мне предназначение данного спецификатора из документации в юмористической форме
Цитата Сообщение от CoderHuligan Посмотреть сообщение
эти движки как бы писались под конкретные игры
если движок хороший, а не собран из г и палок, то он может получить универсальное признание. Например, Unreal Engine тоже создавался для конкретной игры - Unreal, но теперь посмотри, сколько разных игр на нем уже сделано: https://ru.wikipedia.org/wiki/... eal_Engine

Добавлено через 8 минут
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Должно на всех виндах запускаться.
как по мне, хорошая программа не должна запускаться на всех версиях винды. Если хочется, чтобы программа работала на всех версиях винды, то нужно выпускать разные версии проги под разные версии винды (прям не под каждую версию винды, но можно сделать три версии: самое старье, от виста до 8.1, и для 10-11)
Иначе, же придется писать программу под старую винду и делать ставку на обратную совместимость новых версий винды. Однако, это означал бы отказ от нового апи и вынужденного использование велосипедов вместо использования новых функций.
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
12.02.2025, 22:10  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
ну и кто теперь троллит?
ну, тя финал этот нафик не нужен, а ты про него спрашиваешь тут - это троллинг - когда можно тупо погуглить.

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

и вот такой вопрос: красиво ли будет,
если поле унаследовать от конфига? знаю, что не очень,
а если композиция? хрен редьки не слаще...

и этот вопрос не загуглишь ...

а финал мне тоже нафик не нужен, хотя я знаю зачем он ...
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6291 / 3015 / 1051
Регистрация: 01.06.2021
Сообщений: 11,409
12.02.2025, 22:22
Цитата Сообщение от XLAT Посмотреть сообщение
ну, тя финал этот нафик не нужен
я пишу код не в рамках изучения языка, а изучаю язык по мере написания кода (то есть пишешь код и если что-то не понимаешь, то берешь паузу и смотришь доку). И вот действительно final мне никогда не понадобился еще в моих кодах. Вот override я использую часто, но его спутника final нет. Вот и захотелось в этот раз просто посмотреть на реальные коды с использованием final, а не просто доку читать.
0
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
12.02.2025, 23:02
Royal_X, final ещё помогает компилеру сделать девиртуализацию в подходящих местах.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
13.02.2025, 00:01  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
убрать из глобала,
итого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    ///------------------------------------------------------------------------|
    /// Game.
    ///------------------------------------------------------------------- Game:
    struct  Game
    {       Game(size_t w, size_t h, float b = 10.f)
                :
                    cfg  (w, h, b),
                    field(cfg    ),
                    logic(field  )
            {
            }
 
        Config::eEVENT inputPlot(const plot_t&  p)
        {   auto   a = logic.inputOpenCell(p);
            return a;
        }
 
        const std::vector<unsigned>& getVisual()
        {   return field.getView();
        }
 
        void setFlag(unsigned x, unsigned y)
        {   field[y][x].setFlag();
        }
 
        void openAll()
        {   field.doOpenAll();
        }
 
        const Config& getConfig() const { return cfg; }
 
    private:
        Config  cfg;
        Field field;
        Logic logic;
    };
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
13.02.2025, 14:27
Это композиция. А почему по значению, а не по ссылке?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6291 / 3015 / 1051
Регистрация: 01.06.2021
Сообщений: 11,409
13.02.2025, 16:11
Цитата Сообщение от CoderHuligan Посмотреть сообщение
а не по ссылке
он сейчас каллиграфером будет пугать)
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
13.02.2025, 16:23  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А почему по значению
так тут тока одна копия(не копия, а единственный экземпляр - каждой твари),
где-то же должен находится объект(ы)?!

Code
1
2
3
Я зашёл в свою квартиру и увидел незнакомого мужика, сидящего в моем кресле.
- Что вы тут делаете?
- Ну, я же должен же где-то находиться. Не так ли?
здесь проблема, реализация поля и логики находится в файле *.cpp, т.е. она там спрятана от глаз.
а класс Game должен видеть полное определение этих классов.
при этом он не что иное, как интерфейс, т.е. должен находится в хедере, чтобы подключаться.

поэтому чтобы не вываливать потроха на всеобщее обозрение,
я его переписал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef MODEL_SERVER_H
#define MODEL_SERVER_H
///----------------------------------------------------------------------------|
/// "model-many.h"
///----------------------------------------------------------------------------:
#include "model.h"
 
namespace minesweeper
{
    struct Field;
    struct Logic;
    struct Gate ;
 
    ///------------------------------------------------------------------------|
    /// Game.
    ///------------------------------------------------------------------- Game:
    struct  GameMany
    {       GameMany() = delete;
            GameMany(size_t W, size_t H, float bomb/*в процентах*/ = 10.f);
           ~GameMany();
 
        Config::eEVENT               inputPlot(unsigned x, unsigned y);
        const std::vector<unsigned>& getVisual();
        void                         setFlag  (unsigned x, unsigned y);
        void                         openAll  ();
 
        const Config& getConfig() const { return cfg; }
 
    private:
        Config cfg;
 
        std::unique_ptr<Field> field;
        std::unique_ptr<Logic> logic;
        std::unique_ptr<Gate>  gate ;
 
        void init();
    };
}
 
#endif // header guard
красиво? мда, не очень.
но зато старый код остался в неизменном виде.

короче, я думаю так, сначала запустить рабочее демо, а потом сделать рефакторинг.
в какую сторону?
можно посмотреть в строну абстрактного класса в роли интерфейса,
просто щас еще не совсем ясно, как оно будет ...

планирую так,
сделать класс ВРАТА с двумя методами, вход ПАКЕТ и выход с ПАКЕТОМ,
т.е. серверу ваще пофиг что там - на той стороне, игра или банкомат с билетами,

он посылает через врата абстрактные байты и ничего не знает об игре...

т.е. класс Game будет скрыт от сервера полностью.


Цитата Сообщение от XLAT Посмотреть сообщение
ПАКЕТ и выход с ПАКЕТОМ,
... как работать с пакетами, тет что ходят по сети ...
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
13.02.2025, 16:36
Цитата Сообщение от XLAT Посмотреть сообщение
а класс Game должен видеть полное определение этих классов.
Просто можно выделять память для них в куче, а в классе Game хранить указатели или ссылки на них. Память выделять именно в Game. Я где-то видел в какой-то игре так делали. И все у них было через указатели. То есть был главный класс игры который хранил указатели на остальные игровые объекты, такая иерархия. Я тоже нечто такое хотел.. То есть объекты могут принимать указатели друг на друга. Работа шла через обмен указателями. Наследования не было. И такой код проще на мой взгляд.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
13.02.2025, 16:48  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Наследования не было.
ваще наследование это классная штука, если знать для чего она нужна,
например,
я хочу проверять модель в режиме консоли.
ноу проблем, наследуемся и добавляем специфику:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    ///------------------------------------------------------------------------|
    /// GameConsole.
    ///------------------------------------------------------------ GameConsole:
    struct  GameConsole : Game
    {       GameConsole(size_t w, size_t h, float b/*в процентах*/ = 10.f)
                :   Game(w, h, b)
            {
                logo();
            }
    
    /// ... - Тут специфика ...
 
    private:
        void logo() const
        {   std::cout << LOGO << RULES << std::endl;
            std::cin.get(); std::system("cls");
        }
    };
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6291 / 3015 / 1051
Регистрация: 01.06.2021
Сообщений: 11,409
13.02.2025, 20:12
XLAT, ты пишешь как сишник. В духе С++ Game должен был быть классом, а не структурой.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
13.02.2025, 21:19
В где сам проект сапера?
Я тоже хочу что то костыльное накатать
Дайте мне класс клеточки написать. Может потяну.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.02.2025, 21:19

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
720
Закрытая тема Создать тему
Новые блоги и статьи
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
сукцессия 6. Питон реализация энилоджиковской модели, картинка про Центральную часть будущей модели
anaschu 26.06.2026
Етить. ИИ мне на основе моего старого файла R создал вот эту вот хмерь на пайтоне. Это уже новая модель, модель сукцессии грибной. потоки фосфора, азота. Углерода. 5 видов организмов. Я даже. . .
Как замкнутый ядерный цикл решит проблему недостатки фосфора? Био миграция фосфора со дна океана
anaschu 26.06.2026
Биологический лифт: Концепция подъема фосфора со дна океана с помощью ЗЯТЦ Предлагаю на обсуждение альтернативу тяжелому промышленному бурению океанического дна. Вместо сложной инженерии мы можем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru