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.133
    В соответствии с назначением раздела, в этой теме предполагается обсуждать конкретные вопросы, которые у вас возникают при создании своих программ (в частности - игр), помогать другим, размещать полезные ссылки на статьи и материалы, которые могут пригодиться другим.

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

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

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

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

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    В Linux?
     
  4. daemolisher

    daemolisher

    Регистрация:
    2 дек 2009
    Сообщения:
    1.704
    @bckpkol, а может шрифты так загружаются в память?

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


    А это:

    #include "stdafx.h"

    Вроде бы, часть VS.
    А для Linux как-то так или так.


    Но это не должно влиять на то, сколько приложение занимает в ram.
     
  5. bckpkol

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    Ну, VS приложил этот файл. Я его выбрасывать не стал, чтобы собиралось на двух системах. Просто добавил в этот файл строку
    Код:
    #if _MSC_VER && !__INTEL_COMPILER
    
    --- добавлено 28 авг 2018, предыдущее сообщение размещено: 28 авг 2018 ---
    На заметку. Сам по себе FPS limiter не высвобождает CPU, если не добавить else SDL_Delay(7).
     
  6. bckpkol

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    sky.png
    Вот сделал небо, теперь его надо как-то в SRGB перемещать. Есть идеи?
    Нашёл на SO - sqrt приблизительно это делает.
    sky2.png
    Правильный способ linear>SRGB>GPU>square>sqrt>screen.
    sky3.png
    Переход на текстуру 32x32 повысил производительность.
    Ой, ошибочка - sqrt сделал, а square нет. Ну, я ещё Reinhard добавлю.
    Что за фигня, и как её убрать без сабдива?
    wtf.png
    http://www.xyzw.us/~cass/qcoord/
    Что там про трёхмерные текстуры и как это касается Sampler2D, не понял. Но всё равно - нормализовал как-то.
    betterbutstill.png
     
    Последнее редактирование: 29 авг 2018
  7. bckpkol

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    ssloy/tinyrenderer
    А как это работает в OpenGL?
    Вот как:
    Код:
        const char* skyCubeVsSrc=
            "#version 140\n"
            "in vec3 coord3d;\n"
            "out vec2 uv1;\n"
            "out vec2 uv2;\n"
            "out vec2 uv3;\n"
            "out vec2 uv4;\n"
            "out vec2 uv5;\n"
            "out vec2 uv6;\n"
            "out vec2 uv7;\n"
            "out vec2 uv8;\n"
            "out vec2 thetagamma;\n"
            "out float cloudline;\n"
            "out float z;\n"
            "uniform mat4 mvp;\n"
            "uniform vec3 sun;\n"
            "uniform vec3 up;\n"
            "uniform float shift;\n"
            "float vecos(vec3 a, vec3 b) {\n"
                "return dot(a, b)/sqrt(dot(a, a)*dot(b, b));\n"
            "}\n"
            "void main(void) {\n"
                "vec3 n=coord3d/sqrt(dot(coord3d,coord3d));\n"
                "z=sqrt(sqrt(max(n.z, 0.01)));\n"
                "cloudline=max(coord3d.z,0.0)*0.25;\n"
                "cloudline=cloudline*cloudline;\n"
                "uv1=n.xy/z/2+shift;\n"//control that to move the clouds higher
                "uv2=uv1+shift;\n"
                "uv3=uv2+shift;\n"
                "uv4=uv3+shift*2;\n"
                "uv5=uv4/16+shift*3;\n"
                "uv6=uv5+shift*5;\n"
                "uv7=uv6+shift*8;\n"
                "uv8=uv7+shift*13;\n"
                "thetagamma=vec2(vecos(n, up), vecos(n, sun));\n"
                "gl_Position = mvp*vec4(n, 1.0);\n"
            "}";
        const char* skyCubeFsSrc=
            "#version 140\n"
            "in vec2 uv1;\n"
            "in vec2 uv2;\n"
            "in vec2 uv3;\n"
            "in vec2 uv4;\n"
            "in vec2 uv5;\n"
            "in vec2 uv6;\n"
            "in vec2 uv7;\n"
            "in vec2 uv8;\n"
            "in vec2 thetagamma;\n"
            "in float cloudline;\n"
            "in float z;\n"
            "uniform sampler2D hosekwilkie;\n"
            "uniform sampler2D scale5;\n"
            "uniform sampler2D scale6;\n"
            "uniform sampler2D scale7;\n"
            "uniform sampler2D scale8;\n"
            "void main() {\n"
                "mediump vec3 hosekwilkietex=texture2D(hosekwilkie, thetagamma).xyz;\n"
                "float scale1tex=texture2D(scale5, uv1, z).x;\n"
                "float scale2tex=texture2D(scale6, uv2, z).x;\n"
                "float scale3tex=texture2D(scale7, uv3, z).x;\n"
                "float scale4tex=texture2D(scale8, uv4, z).x;\n"
                "float scale5tex=texture2D(scale5, uv5, z).x;\n"
                "float scale6tex=texture2D(scale6, uv6, z).x;\n"
                "float scale7tex=texture2D(scale7, uv7, z).x;\n"
                "float scale8tex=texture2D(scale8, uv8, z).x;\n"
                "float clouds=min(max(scale1tex+scale2tex+scale3tex+scale4tex+scale5tex+scale6tex+scale7tex+scale8tex-4.0,0.0),4.0);\n"
                "vec3 resultColor=hosekwilkietex*hosekwilkietex+clouds*cloudline;\n"
                "gl_FragColor = vec4(sqrt(resultColor/(resultColor+1.0)),1.0);\n"
            "}";
    
    skycorrect.png
     
    Последнее редактирование: 29 авг 2018
  8. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
  9. daemolisher

    daemolisher

    Регистрация:
    2 дек 2009
    Сообщения:
    1.704
    Вот "Диспетчер задач" показывает:

    Windows 7 - 64bit:
    mem_7.gif

    Windows XP - 32bit:
    mem_XP.gif


    Э-э-э.. даже не скажу в XP или 7 больше памяти израсходовалось.. :)
     
  10. bckpkol

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    Снимок экрана_2018-09-10_20-32-25.png
    На Orange Pi 8.2 мб резидентной. На Arch всё ещё 50 c чем-то, по-моему, так и было. Хотя я много чего туда ещё добавил, чтоб такое небо получить. Я ещё шейдер портировал на версию 100 и оптимизировал. Чтоб у всех работало.
    Код:
        const char* skyCubeVsSrc=
            "#version 100\n"
            "attribute lowp vec3 coord3d;\n"
            "varying lowp vec2 uv1;\n"
            "varying lowp vec2 uv2;\n"
            "varying lowp vec2 uv3;\n"
            "varying lowp vec2 uv4;\n"
            "varying lowp vec2 uv5;\n"
            "varying lowp vec2 uv6;\n"
            "varying lowp vec2 uv7;\n"
            "varying lowp vec2 uv8;\n"
            "varying lowp vec2 thetagamma;\n"
            "varying lowp float cloudline;\n"
            "varying lowp float z;\n"
            "uniform lowp mat4 mvp;\n"
            "uniform lowp vec3 sun;\n"
            "uniform lowp float shift;\n"
            "lowp float vecos(vec3 a, vec3 b) {\n"
                "return dot(a, b)/sqrt(dot(a, a)*dot(b, b));\n"
            "}\n"
            "void main(void) {\n"
                "lowp vec3 n=coord3d/sqrt(dot(coord3d,coord3d));\n"
                "z=sqrt(sqrt(max(n.z, 0.01)));\n"
                "uv1=n.xy/(z*2.0);\n"
                "uv2=uv1*0.5+shift;\n"
                "uv3=uv2*0.5+shift*2.0;\n"
                "uv4=uv3*0.5+shift*2.0;\n"
                "uv5=uv4*0.5+shift*3.0;\n"
                "uv6=uv5*0.5+shift*3.0;\n"
                "uv7=uv6*0.5+shift*5.0;\n"
                "uv8=uv7*0.5+shift*5.0;\n"
                "lowp vec3 up=vec3(0.0,0.0,1.0);\n"
                "thetagamma=vec2(vecos(n, up), vecos(n, sun));\n"
                "cloudline=max(thetagamma.x,0.0)*0.25;\n"//control that to move the clouds higher
                "cloudline=cloudline*cloudline;\n"
                "gl_Position = mvp*vec4(n, 1.0);\n"
            "}";
        const char* skyCubeFsSrc=
            "#version 100\n"
            "varying lowp vec2 uv1;\n"
            "varying lowp vec2 uv2;\n"
            "varying lowp vec2 uv3;\n"
            "varying lowp vec2 uv4;\n"
            "varying lowp vec2 uv5;\n"
            "varying lowp vec2 uv6;\n"
            "varying lowp vec2 uv7;\n"
            "varying lowp vec2 uv8;\n"
            "varying lowp vec2 thetagamma;\n"
            "varying lowp float cloudline;\n"
            "varying lowp float z;\n"
            "uniform sampler2D hosekwilkie;\n"
            "uniform sampler2D scale8;\n"
            "void main() {\n"
                "lowp vec3 hosekwilkietex=texture2D(hosekwilkie, thetagamma).xyz;\n"
                "lowp float scale1tex=texture2D(scale8, uv1, z).x;\n"
                "lowp float scale2tex=texture2D(scale8, uv2, z).x;\n"
                "lowp float scale3tex=texture2D(scale8, uv3, z).x;\n"
                "lowp float scale4tex=texture2D(scale8, uv4, z).x;\n"
                "lowp float scale5tex=texture2D(scale8, uv5, z).x;\n"
                "lowp float scale6tex=texture2D(scale8, uv6, z).x;\n"
                "lowp float scale7tex=texture2D(scale8, uv7, z).x;\n"
                "lowp float scale8tex=texture2D(scale8, uv8, z).x;\n"
                "lowp float clouds=max(scale1tex+scale2tex+scale3tex+scale4tex+scale5tex+scale6tex+scale7tex+scale8tex-4.0,0.0);\n"
                "lowp vec3 resultColor=clouds*cloudline+hosekwilkietex*hosekwilkietex;\n"
                "gl_FragColor = vec4(sqrt(resultColor/(resultColor+1.0)),1.0);\n"
            "}";
    
    красивое фото экрана
    Ещё, заметил в программе таймбомбу. Если shift станет слишком высоким, небу кранты.
    Решение - %64.
    Нет, кранты небу по другой причине. Когда видеодрайвер не может выделить память для двойного буфера, начинается tearing. Это обычная проблема на Pi.
    Тогда надо отключить динамическое небо. Используется 32x32 текстура. Это даёт 16 тайлов в 128x128. 180/16~=11 градусов поворота неба, что не так уж и плохо.
     
    Последнее редактирование: 10 сен 2018
  11. bckpkol

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    Снимок экрана_2018-09-11_01-37-49.png
    На Arch память чуть подросла, на Armbian осталась прежней. Процессор используется на 0-1% вместо 4.
    И я забыл - в шейдере 90 градусов, не 180. Так что в память загружены каждые 5.
    Код:
        const char* skyCubeVsSrc=
            "#version 100\n"
            "attribute lowp vec3 coord3d;\n"
            "varying lowp vec2 uv1;\n"
            "varying lowp vec2 uv2;\n"
            "varying lowp vec2 uv3;\n"
            "varying lowp vec2 uv4;\n"
            "varying lowp vec2 uv5;\n"
            "varying lowp vec2 uv6;\n"
            "varying lowp vec2 uv7;\n"
            "varying lowp vec2 uv8;\n"
            "varying lowp vec2 thetagamma;\n"
            "varying lowp float z;\n"
            "varying lowp float cloudline;\n"
            "uniform lowp mat4 mvp;\n"
            "uniform lowp vec3 sun;\n"
            "uniform lowp float shift;\n"
            "uniform lowp vec2 sky_pad;\n"
            "lowp float vecos(vec3 a, vec3 b) {\n"
                "return dot(a, b)/sqrt(dot(a, a)*dot(b, b));\n"
            "}\n"
            "void main(void) {\n"
                "lowp vec3 n=normalize(coord3d);\n"
                "z=sqrt(sqrt(max(n.z, 0.01)));\n"
                "uv1=n.xy/(z*2.0);\n"
                "uv2=uv1*0.5+shift;\n"
                "uv3=uv2*0.5+shift*2.0;\n"
                "uv4=uv3*0.5+shift*2.0;\n"
                "uv5=uv4*0.5+shift*3.0;\n"
                "uv6=uv5*0.5+shift*3.0;\n"
                "uv7=uv6*0.5+shift*5.0;\n"
                "uv8=uv7*0.5+shift*5.0;\n"
                "lowp vec3 up=vec3(0.0,0.0,1.0);\n"
                "lowp vec2 thg=vec2(vecos(n, up), vecos(n, sun));\n"
                "thetagamma=thg*0.125+0.125+sky_pad;\n"
                "cloudline=max(0.0,thg.x)*thg.x*0.25;\n"
                "gl_Position = mvp*vec4(n, 1.0);\n"
            "}";
        const char* skyCubeFsSrc=
            "#version 100\n"
            "varying lowp vec2 uv1;\n"
            "varying lowp vec2 uv2;\n"
            "varying lowp vec2 uv3;\n"
            "varying lowp vec2 uv4;\n"
            "varying lowp vec2 uv5;\n"
            "varying lowp vec2 uv6;\n"
            "varying lowp vec2 uv7;\n"
            "varying lowp vec2 uv8;\n"
            "varying lowp vec2 thetagamma;\n"
            "varying lowp float z;\n"
            "varying lowp float cloudline;\n"
            "uniform sampler2D hosekwilkie;\n"
            "uniform sampler2D scale8;\n"
            "void main() {\n"
                "lowp vec3 hosekwilkietex=texture2D(hosekwilkie, thetagamma).xyz;\n"
                "lowp float scale1tex=texture2D(scale8, uv1, z).x;\n"
                "lowp float scale2tex=texture2D(scale8, uv2, z).x;\n"
                "lowp float scale3tex=texture2D(scale8, uv3, z).x;\n"
                "lowp float scale4tex=texture2D(scale8, uv4, z).x;\n"
                "lowp float scale5tex=texture2D(scale8, uv5, z).x;\n"
                "lowp float scale6tex=texture2D(scale8, uv6, z).x;\n"
                "lowp float scale7tex=texture2D(scale8, uv7, z).x;\n"
                "lowp float scale8tex=texture2D(scale8, uv8, z).x;\n"
                "lowp float clouds=max(scale1tex+scale2tex+scale3tex+scale4tex+scale5tex+scale6tex+scale7tex+scale8tex-4.0,0.0);\n"
                "lowp vec3 resultColor=clouds*clouds*cloudline+hosekwilkietex*hosekwilkietex;\n"
                "gl_FragColor = vec4(sqrt(resultColor/(resultColor+1.0)),1.0);\n"
            "}";
    
     
    Последнее редактирование: 10 сен 2018
  12. Ardash

    Ardash

    Регистрация:
    5 окт 2017
    Сообщения:
    1.019
    Может стоит эти исследования выделить в отдельную тему? А то, как мне кажется, оффтопом попахивает, но тема интересная.
     
  13. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.204
    Привет, проблема в следующем:

    Есть исходники, всё собирается на Win7 с помощью cmake и MSVC 2013 CE. В исходниках есть SDL2.

    В Win7 сборка проходит без ошибок, но полученный .exe при запуске начинает требовать (выяснено эмпирическим путём) набор api set stub для Win8, начиная с xinput1_4.dll, затем api-win..., api-core... и т.д.

    Пробовал разные ключи для сборки. Не помогло. В readme.txt про это ничего нет.

    Вобщем, выходит, собираю под win7 программу для win8. Где/как явно задать сборку под win7?

    Спасибо.
     
  14. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    @Kristobal Hozevich Hunta, вероятно ты хочешь чего то такого https://stackoverrun.com/ru/q/4654500
    Хотя, не факт, что тебе поможет именно это.

    Где то в исходниках или ридми должно что то про это быть, если программа в принципе работает под системами ниже 8 (то что она компилируется ни о чём таком не говорит). В принципе ты можешь попробовать добавить недостающие dll в систему, что логично. Однако же, если программа принципиально использует то, чего нет в 7 - то никак.
    Windows API Sets
    MigrationGuide - SDL Wiki'
    http://wiki.libsdl.org/Installation

    Мануал для новичков в SDL
    Lazy Foo' Productions - Beginning Game Programming v2.0
     
    Последнее редактирование: 30 сен 2018
    Kristobal Hozevich Hunta нравится это.
  15. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.204
    @Bato-San,
    Да, начал так делать, но там их, похоже, "внатуре три вагона" :)
     
  16. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    @Kristobal Hozevich Hunta, ну, а как ты хотел? Под линём ты бы утонул в подкачке пакетов из репозиториев, пока, не дай лес, но часто бывает, не уткнулся бы в тот факт, что последний пакет лежит где то у чёрта на куличках и этот чёрт умер во времена первого дума.

    Под виндой ты хоть можешь посмотреть импорты скомпилированного файла и добавить их, потом им, но обычно не так уж и много.
     
  17. Ardash

    Ardash

    Регистрация:
    5 окт 2017
    Сообщения:
    1.019
    Привет. Попробуйте перенастроить toolchain на msvc-winxp в настройках проекта закладке general (возможно придется доустановить соответствующий компонент или патч(как было в 2012 версии, где такая штука появилась только в 2012.2 версии))
    Еще можете попробовать перенастроить проект на статическую линковку с системными библиотеками.

    Вообще, мне кажется, вы столкнулись с данной проблемой из-за того, что в Win 7 не установлены актуальные обновления. Можно, если возможно, проверить и этот вариант.
     
    Kristobal Hozevich Hunta нравится это.
  18. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.204
    Сборку под WinXP пробовал, эффект тот же.
    По MS xinput 1_3.dll поставляется с win7, xinput1_4.dll - с win8.
    Проект частный, отзывы об успешной работе есть, но под win10.
     
  19. Ardash

    Ardash

    Регистрация:
    5 окт 2017
    Сообщения:
    1.019
    https://support.microsoft.com/ru-ru...e-pack-1-for-windows-7-and-for-windows-server
    https://support.microsoft.com/ru-kz/help/2999226/update-for-universal-c-runtime-in-windows
    XInput Versions

    Попробуйте перенастроить проект на линковку с xinput1_3. С большой долей вероятности проект не использует функционал от 1.4 и этого может быть достаточно. В противном случае автор "заточил" работу только под win8-10 линейку и придется эти куски кода переписать или обратиться за этим к автору.
     
    Kristobal Hozevich Hunta нравится это.
  20. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.204
    Собрал под win7.

    Раньше делал сборку всего решения, в том числе ZERO_CHECK.
    Прочитал, что последний перезапускает cmake. Видимо, это переопределяло нужную конфигурацию.

    Собрал без зеро_чека, заработало.
     
  21. Kristobal Hozevich Hunta Реликтовый гоминид

    Kristobal Hozevich Hunta

    Регистрация:
    24 апр 2006
    Сообщения:
    1.204
    Привет, еще вопрос.

    Есть флаг hellMap. Если он установлен то сообщение desc (описание данной карты) выводится одним способом (SetText( va( "\n%s", desc.c_str()))), а если нет - то другим (SetText( desc )).

    Не могу понять, зачем. Вижу только, что в первом случае сообщение выводится со сдвигом на одну строку ("\n%s"). Возможно, в первом случае можно использовать управляющие символы в самой desc?

    Код:
    
    idStr desc;
    
    txtVal = loadGUI->GetRootObject().GetNestedText( "txtDesc" );
                if ( txtVal != NULL ) {
    
                    if ( isHellMap ) {
                        txtVal->SetText( va( "\n%s", desc.c_str() ) );
                    } else {
                        txtVal->SetText( desc );
                    }
                    txtVal->SetStrokeInfo( true, 1.75f, 0.75f );
                }
    
    Вот "обвязка" для va() и c_str():

    Код:
    char * data;
    …
    ID_INLINE const char *idStr::c_str() const {
        return data;
    }
    …
    
    Void Format( VERIFY_FORMAT_STRING const char *fmt, ... );    // perform a threadsafe sprintf to the string
    …
    
    char * va( VERIFY_FORMAT_STRING const char *fmt, ... );
    …
    
    Правда, idStr имеет довольно сложный формат:

    Код:
    ID_INLINE idStr::idStr() {
        Construct();
    }
    
    ID_INLINE idStr::idStr( const idStr &text ) {
        Construct();
        int l;
    
        l = text.Length();
        EnsureAlloced( l + 1 );
        strcpy( data, text.data );
        len = l;
    }
    ...
     
    Последнее редактирование: 7 дек 2018
  22. c4_d

    c4_d

    Регистрация:
    11 авг 2009
    Сообщения:
    41
    Здравствуйте! Я тут копаю игру и файлы ресурсов упакованы lzss. я нашёл анпакер, и хочу разобраться. Поэтому спрашиваю тут.
    1 как создатель анпакера понял чем упакованы ресурсы? На создании каких программ мне лучше сконцентрироваться, чтобы получить навыки эммм хака ресурсов.
    Пожалуйста посоветуйте статьи или книги. Лучше книги. Я если что я понимаю как писать код и как пишутся простые игры.
    Моя цель написать свой анпакер и пакер ресурсов, разобраться в работе этой маленькой игры. Цели мои чисто академические. Спасибо. А игра если что skate or die. Я её взял, потому что она мне нравится и её структура не была сложной. Простите пишу с телефона Спасибо за внимание.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление