Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - xttx

Страницы: [1]
1
Всем доброго времени суток!

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

Игрушка обучает программированию в развлекательной форме.
В отличии от большинства игрушек такого рода, код пишется на чистом C#, а не на абстрактном языке в вакууме.

На данный момент полностью готова первая глава, которая включает в себя:
- использование и написание методов/функций
- переменные и константы
- основные типы данных (int, float, bool, string)
- арифметические и логические выражения
- операции ветвления и циклы
- массивы (включая многомерные и зубчатые массивы)
- операции со строками

Сейчас игра находится на стадии "контента пока мало но движок, в целом готов".
В связи с чем ищутся добровольцы на бета-тест движка и понятности сценария:
- не знакомые с программированием вообще — для проверки сценария и доступности его для понимания
- поверхностно знакомые с программированием на C# или любом другом языке — для выявления косяков и багов в движке игры
- хорошо знакомые с программированием — для проверки используемой терминологии и определений на соответствие официальным (очень возможно, что я с этим где-то накосячил)

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


2
Залез в сейвы хекс-редактором, подправил кое-что, и всё вроде шло хорошо, по этому бекап я не додумался оставить. Но через несколько часов игры, в момент, когда мне должны были дать летучий корабль, выяснилось, что эту сейвку переглючивает, а все мои предыдущие сейвы уже основаны на сломанной :(

Часов 30 в никуда...  :'(

Если у кого ни будь есть сейв, для пк-версии или андроида (они, вроде, совместимы) в районе получения летучего корабля (оперный театр), поделитесь пожалуйста. В интернете нигде найти не смог.

3
Я понимаю, что это немного не тот форум, где нужно спрашивать такие вещи, но на ru-board.com и stackoverflow мне отвечать не торопятся, а тут, я точно знаю, есть товарищи, которые в этом хорошо разбираются.

Вопрос собственно:
есть хук, который должен рисовать оверлей в контексте хукаемого процесса. В случае с DX11, оно рисуется, но после его отключения, в окне приложения остаётся только пустой чёрный экран.
Так ведут себя не все приложения: Dolphin и большинство игр нормально рендерят свою картинку после отключения хука, а вот PCSX2 и COD-AW - дают чёрный экран. А в demul с плагином dx11_old, после отключения хука вообще каша из полигонов (а с новым плагином dx11 - вообще оверлей не отображается, но с этим я уже позже буду разбираться).
Видимо я забываю ресторить какой-то стейт, но какой???  :neznayu:

Вот кусок кода, из хука функции present, и всё что я возвращаю в изначальное состояние:
if (showOverlay) {
                    sb.Begin();
                    sb.Draw(srv, rect, Color.White);
                    sb.End();
} elseif (reset) {
                    reset = false;
                    Direct3D11.Device d = swapChain.GetDevice(Of Direct3D11.Device);
                    DeviceContext dc = d.ImmediateContext;
                    dc.InputAssembler.PrimitiveTopology = orig_prim;
                    dc.InputAssembler.InputLayout = orig_inp;
                    dc.Rasterizer.State = orig_st_rs;
                    dc.VertexShader.Set(orig_vs);
                    dc.VertexShader.SetConstantBuffers(0, 1, orig_cst_buf);
                    dc.PixelShader.Set(orig_ps);
                    dc.PixelShader.SetSampler(0, orig_st_sm(0));
                    dc.PixelShader.SetShaderResources(0, 1, orig_shr_res);
                    dc.OutputMerger.SetBlendState(orig_st_bl, orig_st_bl_clr, orig_st_bl_int);
                    dc.OutputMerger.SetDepthStencilState(orig_st_dc, orig_st_dc_int);
                    if (d.FeatureLevel) >= Direct3D.FeatureLevel.Level_10_0 {
                        dc.GeometryShader.Set(orig_gs);
                        dc.GeometryShader.SetConstantBuffers(0, 1, orig_gs_cb);
                        dc.GeometryShader.SetShaderResources(0, 1, orig_gs_sr);
                        if (d.FeatureLevel >= Direct3D.FeatureLevel.Level_11_0) {
                            dc.HullShader.Set(orig_hs);
                            dc.DomainShader.Set(orig_ds);
                        }
                    }
                    if (orig_vrt_buf AndAlso orig_vrt_buf.Count > 0) dc.InputAssembler.SetVertexBuffers(0, orig_vrt_buf, orig_vrt_int1, orig_vrt_int2);
                    dc.InputAssembler.SetIndexBuffer(orig_ind_buf, orig_ind_frm, orig_ind_int);
                    Main.interfaceClass.callBack_txt("DX11 Hook: States restored.");
}

Я почти совсем не знаком с DX11, и возникла мысль что может я просто все эти стейты/буферы просто не в том порядке ресторю, я даже не знаю важен ли порядок вобще?

4
Может для кого-то будет интересно:
последний Pcem (http://pcem-emulator.co.uk/) эмулирует 1ую Voodoo. Сейчас поигрался (TR2 и 3, Half-life, Moto-racer 2, Quake II, NFS2, Star Wars Racer) - всё очень прилично, только немного медленно. Пару раз крэшнулся.

Страницы: [1]