Just Do It!
 Аватар для XLAT
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3

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

08.01.2025, 12:45. Показов 47512. Ответов 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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
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
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
11.02.2025, 20:42  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
прога не тащит с собой никаких dll.
это спорно,
прочувствовать такую ситуацию можно, когда придешь с такой прогой к соседу...
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
11.02.2025, 20:52
XLAT, я поэтому всегда говорю - пиши на JS, а гуй на HTML+CSS. В итоге прога работает даже в браузере Nokia.
JS очень быстрый язык. Я раньше сам не верил, пока не протестировал. Весь мир держится на инете, а инет на JS движках, поэтому их хорошо оптимизируют.

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

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

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

Выдумывать пример сам не стал, тебе же нужен реальный.
Но если не понятно о чем я, то чисто для понимания, пример могу написать.
1
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
12.02.2025, 02:22
SmallEvil, я кажется понял. Если убрать виртуальность, то ломается полиморфизм, поэтому виртуальность оставляем, но с помощью спецификатора final запрещаем переопределение.
Ну ещё можем запретить наследование c класса с помощью final.
0
Just Do It!
 Аватар для XLAT
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
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
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
12.02.2025, 22:10  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
ну и кто теперь троллит?
ну, тя финал этот нафик не нужен, а ты про него спрашиваешь тут - это троллинг - когда можно тупо погуглить.

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

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

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

а финал мне тоже нафик не нужен, хотя я знаю зачем он ...
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
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
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
13.02.2025, 16:11
Цитата Сообщение от CoderHuligan Посмотреть сообщение
а не по ссылке
он сейчас каллиграфером будет пугать)
0
Just Do It!
 Аватар для XLAT
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 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
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
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
Закрытая тема Создать тему
Опции темы

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru