1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Кодерский уголок

Тема в разделе "Мастерская", создана пользователем Dimouse, 10 сен 2006.

  1. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.149
    В соответствии с назначением раздела, в этой теме предполагается обсуждать конкретные вопросы, которые у вас возникают при создании своих программ (в частности - игр), помогать другим, размещать полезные ссылки на статьи и материалы, которые могут пригодиться другим.

    Что здесь не допускается:
    - беспорядочный флуд на всевозможные темы, в том числе общие обсуждения языков программирования без конкретики (карается по статье "флуд и оффтопик" *),
    - разжигания на темы "что лучше, Си или Си++ и чем они отличаются?", "какой язык программирования лучше X или Y?" и т.п. (карается по статье "флейм и участие в холиварах" *),
    - мерение пиписьками в стиле "я лучше программирую" или "ты не умеешь программировать" (карается по статье "оскорбление участников и их взглядов" *).

    Всё это допускается в специально созданной теме "Беседка для программистов или «Бутерброд с кодом».

    * по усмотрению модератора также возможно применение блокировки в данной теме.

    Оригинальное сообщение
     
    Последнее редактирование модератором: 24 ноя 2014
    CY8R4Y нравится это.
  2.  
  3. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Какие нафиг моды, когда она на рекомендуемой конфигурации 2 fps выдвала. Русский геймдев же, бессмысленный и беспощадный.
     
  4. Master of Games

    Master of Games

    Регистрация:
    30 июн 2016
    Сообщения:
    122
    У меня уже давно накипела одна проблема. Как можно вывести символы юникода на экран, которые идут дальше диапазона FFFF? В частности интересуют египетские иероглифы, у которых диапазон в юникоде с 13000 по 1342F. Конечно же поставил шрифт - aegyptus, поддерживающий эти иероглифы. Ставил нужную кодировку. Пытался с помощью С/С++ и winapi вывести на экран, но почему-то не работало. Тип проекта не важен, хотя в консольном это не возможно. В принципе и не важен язык - если кто-то знает хороший ЯП для таких целей, где это можно делать без танцев с бубнами и быстро, то приму к сведению, хотя мне проще будет на С/С++. Мне просто нужно уметь выводить эти чёртовы символы) Даже в простом блокноте и notepad++ не удавалось их выводить.
     
  5. nop

    nop

    Регистрация:
    5 дек 2014
    Сообщения:
    2.297
    @Master of Games, Почитай про кодирование UTF-16. Тебе надо больше одного wchar_t. Ну и чтоб шрифт их содержал.
    UTF-16 — Википедия
    Я в последний раз такое кодил на маке, всё работало.
     
  6. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.207
    Что-то не возьму в толк, как это работает:

    Код:
    attack_flag  |=  ATTACK
    ...
    if ( attack_flag  &  ATTACK )
    В первой строке не понимаю, как присваивается значение, а во второй - зачем такая странная проверка. Хотя вот что:

    Между строками attack_flag не меняется, а ATTACK - динамически измеряемая переменная (то есть может менять значение в процессе перехода от первой строки ко второй), эта переменная устанавливается в true, когда нажата кнопка мыши.

    Спасибо.
     
  7. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.202
    Обычно где-то в коде должно быть что-то типа (пример!):
    // двоичное: 00000001
    #define ATTACK 1
    // двоичное: 00000010
    #define WALK 2
    // двоичное: 00000100
    #define JUMP 4
    и так далее.
    | - логическое или (OR)
    & - логическое и (AND)
    attack_flag |= ATTACK - это не присваивание, а коротка форма записи:
    attack_flag = attack_flag | ATTACK
    Остальное тут: Битовая маска.
     
    Kristobal Hozevich Hunta нравится это.
  8. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.207
    @iunnamed, да, теперь понял.

    Не совсем ясно, почему во второй строке не подходит просто:

    Код:
    if ( ATTACK )

    А, нет, понятно.

    Спасибо!
     
    Последнее редактирование: 2 апр 2018
  9. bckpkol

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    Посмотрел на эту кучу тем. Кажется, я тут не к месту. Но всё равно выложу.
    Вот наброски WML редактора (я ни хрена не знаю про WML, а док ужасный, так что хочется что-то графическое)

    WTV
    Чистой воды грязный хак, простите за каламбур.
    Ещё был примитивный движок Alduda IFiction. Был по нему док, но я его потерял. Ну да я его всё равно когда-нибудь портирую.
    А пока кусок кода. Начало игры "Шапкин" уже проходится, на сколько сделал, не знаю.
    AldG
     
    Последнее редактирование: 12 май 2018
  10. dj--alex

    dj--alex

    Регистрация:
    7 сен 2007
    Сообщения:
    59
    Кто нибудь пишет игры на Lua , Love2d или чем то очень схожем?

    я одну свеженаписанную над которой работал 2 года выложил.
     
  11. bckpkol

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    Здрасьте, у меня вопрос. Я только что написал программу, которая открывает окно 1024x576 с GL контекстом на SDL2 и совсем ничего не рисует.
    При этом программа берёт, судя по диспетчеру задач, 45 mb резидентной. Не много ли, а? Потом скажут, что я память у файрфокса учился использовать.
    При этом крупных утечек нет.
    Код:
    #include "stdafx.h"
    #include <cstdlib>
    #include <cstring>
    #include <iostream>
    #include <SDL.h>
    #include <SDL_opengles2.h>
    
    И эти библиотеки вместе - 45 mb. Чем что заменить?
     
  12. Ardash

    Ardash

    Регистрация:
    5 окт 2017
    Сообщения:
    1.019
    Вопросов на самом деле очень много. Какая ОС, какой компилятор, какие параметры сборки, что включено в сборку, зачем iostream и cstring? Почему не на C?
     
  13. bckpkol

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    Компиляторы - MSVC 19.14 on Windows (82 mb ram), GCC 4.9 on Ubuntu (45 mb ram), GCC 8.2 on Arch (50 mb ram)
    Параметры сборки на линуксах вот эти:
    Код:
    CPPFLAGS=$(shell sdl2-config --cflags) -Wno-write-strings -O3 $(EXTRA_CPPFLAGS)
    LDLIBS=$(shell sdl2-config --libs) $(EXTRA_LDLIBS)
    EXTRA_LDLIBS?=-lGL
    all: GLHexes
    clean:
        rm -f *.o GLHexes
    .PHONY: all clean
    
    На винде стандартные для VS 2017.
    Не на C... потому что не на C и всё.
    Добавил - полностью избавился от iostream. Программа берёт столько же. При этом размер исп. файла уменьшился больше чем вдвое - с 35 кб до 15.
     
    Последнее редактирование: 28 авг 2018
  14. Ardash

    Ardash

    Регистрация:
    5 окт 2017
    Сообщения:
    1.019
    Valgrind
     
  15. bckpkol

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    Я же говорил, что утечек *нет*. Так что этот пункт я уже выполнил. Кроме того, в моём коде нет ни одного malloc и new, так что утечек просто не может быть.
    Но есть это.
    ==30352== Warning: Malformed stack trace detected. In Massif's output,
    ==30352== the size of an entry's child entries may not sum up
    ==30352== to the entry's size as they normally do.
    ==30352== Warning: Malformed stack trace detected. In Massif's output,
    ==30352== the size of an entry's child entries may not sum up
    ==30352== to the entry's size as they normally do.
    ==30352== Warning: Malformed stack trace detected. In Massif's output,
    ==30352== the size of an entry's child entries may not sum up
    ==30352== to the entry's size as they normally do.
    ==30352== (And Massif now won't warn about this again.)
     
    Последнее редактирование: 28 авг 2018
  16. Ardash

    Ardash

    Регистрация:
    5 окт 2017
    Сообщения:
    1.019
    можно выяснить какая из подключенных библиотек "жрет"

    Еще можно поиграть с версиями библиотек
     
  17. bckpkol

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    bump
    --- добавлено 28 авг 2018, предыдущее сообщение размещено: 28 авг 2018 ---
    Странно. Massif говорит - у меня 3.602 MB heap.
    выхлоп
    --- добавлено 28 авг 2018 ---
     
  18. Ardash

    Ardash

    Регистрация:
    5 окт 2017
    Сообщения:
    1.019
    Полезный блок, как я понимаю, вот

    ->01.92% (72,704B ) 0x54D9EFE: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21)
    | ->01.92% (72,704B ) 0x40106B8: call_init.part.0 (dl-init.c:72)
    | ->01.92% (72,704B ) 0x40107C9: _dl_init (dl-init.c:30)
    | ->01.92% (72,704B ) 0x4000C68: ??? (in /lib/x86_64-linux-gnu/ld-2.23.so)

    Может это new libstdc++ of gcc5.1 may allocate large heap memory
     
    Последнее редактирование: 28 авг 2018
  19. bckpkol

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    Шутишь? 72 kb?
     
  20. Ardash

    Ardash

    Регистрация:
    5 окт 2017
    Сообщения:
    1.019
    тьфу. В запятых заблудился. В таком случае по этому дампу не видно ничего полезного, по нему самый прожорливый - драйвер видеокарты - целый мегабайт
    --- добавлено 28 авг 2018, предыдущее сообщение размещено: 28 авг 2018 ---
    @bckpkol Каким средством снимал потребление памяти? "GCC 4.9 on Ubuntu (45 mb ram), GCC 8.2 on Arch (50 mb ram)"
     
  21. bckpkol

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    Вот скрин из heaptrack.
    heaptrack.png
    Так что резидентная и heap - это не одно и то же.
     
    Ardash нравится это.
  22. daemolisher

    daemolisher

    Регистрация:
    2 дек 2009
    Сообщения:
    1.704
    Попробуйте эти ключи реестра удалить:

    Открываем реестр
    Находим:

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RADAR\HeapLeakDetection\DiagnosedApplications\MyApplication.exe]

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\MyApplication.exe]


    Вместо 'MyApplication.exe' - имя вашей программы.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление