Отладочная система для MU Online разработок: вывод отладочной информации

Автор 7mm, 2010 Дек. 05, 17:15

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] отладкаотладочная системаmu online разработки

7mm

Всем привет. Очередная порция вкусностей - простейшая система отладки, которую можно использовать в процессе разработки. Итак:

debug.h
VOID DbgInit();
VOID DbgFree();
VOID DbgMsg(PCHAR pDbgFmt, ...);
VOID DbgPrint(PCHAR pDbgFmt, ...);

debug.c
#include "stdafx.h"

static HANDLE DbgMutex = NULL;

VOID DbgInit()
{
DbgMutex = CreateMutex(NULL, FALSE, NULL);

if (DbgMutex && AllocConsole()) {
SetConsoleTitle("Welcome to the debugging console!");
} else {
DbgMsg("Unable to initialize console!");
ExitProcess(-1);
}
}

VOID DbgFree()
{
WaitForSingleObject(DbgMutex, INFINITE);
FreeConsole();
CloseHandle(DbgMutex);
}

VOID DbgMsg(PCHAR pDbgFmt, ...)
{
CHAR data[1024];
va_list args;

va_start(args, pDbgFmt);
wvsprintf(data, pDbgFmt, args);
va_end(args);

MessageBox(NULL, data, "[DEBUG]", MB_OK);
}

VOID DbgPrint(PCHAR pDbgFmt, ...)
{
CHAR data[1024];
va_list args;

va_start(args, pDbgFmt);
wvsprintf(data, pDbgFmt, args);
va_end(args);

WaitForSingleObject(DbgMutex, INFINITE);
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), data, lstrlen(data), NULL, NULL);
ReleaseMutex(DbgMutex);
}

Инициализация при загрузке DLL:

BOOL WINAPI DllMain(HINSTANCE hModule, DWORD nReason, LPVOID lpValue)
{
switch (nReason) {
case DLL_PROCESS_ATTACH:
DbgInit();
break;
case DLL_PROCESS_DETACH:
DbgFree();
break;
}
}

И собственно применение:

DbgMsg("This is a %sn", "DbgMsg");
DbgPrint("This is a %sn", "DbgPrint");

Как видно, вывод отладочной информации будет производиться на консоль, в случае с DbgPrint, или в окно MessageBox, в случае с DbgMsg. Форматирование осуществляется с помощью wsprintf, поэтому есть ограничение на длину сообщения (1024 байта), а также допустимые параметры (например, нельзя вывести float-значение). В процессе работы с консолью используется мьютекс - это позволяет обеспечить работу с консолью нескольких потоков.

SmallHabit


7mm

Цитата: SmallHabit от 2010 Дек. 05, 18:54  7mm у меня к вам вопрос, вы разбираетесь в OpenGL графике? =)

Да тут во всём приходится разбираться ;) Но профессионально - к сожалению, нет.

SmallHabit

Да вот просто тут решил "занятся"(изуродовать) графикой, и решил начать с малого - добавить туман, там где кончается прорисовка карты(ну сам вьюпорт в клиенте)... дабы при использовании 3Д камеры казалось что карта не обрубается и дальше чёрный экран, а как будто она вся в тумане(выглядит довольно таки прилично).

Ну в общем, хукнул функцию glEnable(незнаю почему её, наверное потому что в каком-то туторе она была хукнута, а других я незнаю). Поигрался с настройками glFogf,glFogi(ну вижу я в первый раз всё это), результат конечно не плох, но косяков больше.

Вот как выглядит хукнутая функция
void APIENTRY Mine_glEnable(GLenum mode)
{
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //хз, зачем, оно ничего не даёт
GLfloat fogColor[4] = {0.8, 0.8, 0.8, 0.0}; //цвет тумана

//рисуем туман?
glEnable(GL_FOG);
glFogf(GL_FOG_DENSITY, 255.0f);
glFogi(GL_FOG_MODE, GL_LINEAR);
glFogfv(GL_FOG_COLOR, fogColor);
glFogf(GL_FOG_START, 1190); //начало
glFogf(GL_FOG_END, 2400); //конец
glHint(GL_FOG_HINT, GL_NICEST);

Real_glEnable(mode); //типо вызов оригинала
}

В общем вот что в игре -

Вот и косяки -

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

Эврика

void APIENTRY Mine_glEnable(GLenum mode)
{
/* if(fLogFile) {
fprintf(fLogFile,"glBegin(%d)n",mode);
fflush(fLogFile);
}*/

if(mode == GL_BLEND)
glDisable(GL_FOG);

// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// GLfloat density = 0.3;
GLfloat fogColor[4] = {0.8, 0.8, 0.8, 0.0};

//rendering global fog
glEnable(GL_FOG);
glFogf(GL_FOG_DENSITY, 255.0f);
glFogi(GL_FOG_MODE, GL_LINEAR);
glFogfv(GL_FOG_COLOR, fogColor);
glFogf(GL_FOG_START, 1190);
glFogf(GL_FOG_END, 2400);
glHint(GL_FOG_HINT, GL_NICEST);

if(mode == GL_BLEND)
glDisable(GL_FOG);

Real_glEnable(mode);
}

if(mode == GL_BLEND)
glDisable(GL_FOG);

при отрисовке прозрачных текстурок,отключаем туман, и вуаля, в тумане все текстуры показываются так как и должны =)

Mr.Kernighan


SmallHabit

Они ничем не отличаются от старых, просто с фиксом, всё отображается как надо+туман



Осталось только настроить его для лучшего вида =)

Ну вот для сравнения Елбеланд(с туманом и без)




Mr.Kernighan

Спойлер
Красиво, беcспорно!
Кстати Small, есть к тебе две просьбы:
1. На счет статейки
2. Сможешь одолжить на время account от офф. корейского сервера? (без левых движений с моей стороны, по поводу account/а).
Буду тебе благодарен.
[свернуть]

SmallHabit

ЦитироватьКрасиво, беcспорно!
Кстати Small, есть к тебе две просьбы:
1. На счет статейки
2. Сможешь одолжить на время account от офф. корейского сервера? (без левых движений с моей стороны, по поводу account/а).
Буду тебе благодарен.

1. Время,время,время+)))
2. На корее у меня нету акк(там по корейской прописке вроде акк)

Mr.Kernighan


7mm

2SmallHabit
Спасибо за туман, буду смотреть. Есть какие наработки по камере? Общедоступный кодес (Camera3D) уж больно коряв, я уже некоторое время вожусь с ним, чтобы сделать например как в ЛА2, но пока то что получается мне не нравиться... Не люблю жёстких патчей, пытаюсь сделать в динамике на базе перехвата функций и расширения функционала.

Bason4ik

на РЗ,нужно у Собиеха поспрашивать,он ведь помоему перебрал клиент АриевМУ...мот чего и подскажет)

SmallHabit

ЦитироватьСпасибо за туман, буду смотреть. Есть какие наработки по камере? Общедоступный кодес (Camera3D) уж больно коряв, я уже некоторое время вожусь с ним, чтобы сделать например как в ЛА2, но пока то что получается мне не нравиться... Не люблю жёстких патчей, пытаюсь сделать в динамике на базе перехвата функций и расширения функционала.

Да незачто, ну я смотрел камеру, дёргал дистанцию видимости и т.д, но это гиблое дело с Му, ибо например если в основном на всех мапах я выставлял ClipX и ClipY по 11000, и клиент шёл как по маслу, то например в Нории 11000 это уже много и фпс падал до 18-17(3.4Ghz IntelCor2Duo, 4GB DDRII,1GB HD4850), что не есть хорошо, а приближение удаление я оставлял как есть. Темболее на каждом железе по разному будет, поэтому надо делать гибкую настройку этой самой камеры. В общем нюансов много, но если постаратся что-то интересное можно вынести из всего этого. :)

Вот видео, можно посмотреть как работает камера(простенько, но для му хватает) :

Цитироватьна РЗ,нужно у Собиеха поспрашивать,он ведь помоему перебрал клиент АриевМУ...мот чего и подскажет)
Ага, так он тебе и выдаст, он в паблик давно ничего не выкладывает помойму... =)

Fiesta

Цитата: SmallHabit от 2010 Дек. 07, 23:30   [Развернуть]Да незачто, ну я смотрел камеру, дёргал дистанцию видимости и т.д, но это гиблое дело с Му, ибо например если в основном на всех мапах я выставлял ClipX и ClipY по 11000, и клиент шёл как по маслу, то например в Нории 11000 это уже много и фпс падал до 18-17(3.4Ghz IntelCor2Duo, 4GB DDRII,1GB HD4850), что не есть хорошо, а приближение удаление я оставлял как есть. Темболее на каждом железе по разному будет, поэтому надо делать гибкую настройку этой самой камеры. В общем нюансов много, но если постаратся что-то интересное можно вынести из всего этого. :)

Вот видео, можно посмотреть как работает камера(простенько, но для му хватает) :

Ага, так он тебе и выдаст, он в паблик давно ничего не выкладывает помойму... =)
Мое мнение,если вообще кому интересно.
Это очень лишняя вещь с камерой,потому что все очень на столько привыкли к стандартной камере,а за туман 10+

[P4F]v1ru5

3д камера это вообще лишнее для му... му - это кривая во всех отношениях игра... в данном случае мы рассматриваем графику, которая оставляет желать лучшего... а к тому-же еще это убожество под 3д камеру... бррр... всегда было страшно приближать экран мушки...

epmak

SmallHabit, впечатляет.
[P4F]v1ru5, Fiesta - если есть возможность, почему бы и не попробовать?

Fiesta

Цитата: epmak от 2010 Дек. 08, 14:43  SmallHabit, впечатляет.
[P4F]v1ru5, Fiesta - если есть возможность, почему бы и не попробовать?
Для меня лично 3д камера это не для му,в му слишком плохая графика благодаря 3д камере можно только заметить все минуса самой игры.
А вот улучшение графики вот это +,игра станет на много красочнее.

user_MU

Вы конечно молодцы ребята но на мой взгляд все эти туманы как и 3Д-камеры бесполезны. Движек игры слабоватенький.
3Д-камеру я включал только 1 раз - как только она появилась и для того что бы посмотреть что это такое. Больше ниразу.
И какой смысл превращать МУ в ЛА? Может уже сразу беритесь за ЛА? Там все намного круче чем в простецкой МУ.
Собственно МУ это недо-онлаин-игра и превращать её в монстра типа вов и ла не вижу смысла.

7mm


SmallHabit

ЦитироватьВы не понимаете, это же в чистом роде research  Just for fun!
Некоторым это недано понять, этого ощущения, когда ты что-то делаешь, и у тебя это получается :)

Profesor08

[quote name='[P4F]v1ru5' post='79878' date='7.12.2010, 23:34']
3д камера это вообще лишнее для му... му - это кривая во всех отношениях игра... в данном случае мы рассматриваем графику, которая оставляет желать лучшего... а к тому-же еще это убожество под 3д камеру... бррр... всегда было страшно приближать экран мушки...[/quote]
А если активировать анизотропную фильтрацию, мультисэмплинг(сглаживание), увеличить дальность прорисовки(отображения) объектов, добавить 3д камеру(которая будет поворачиваться ГЛАДКО и Удобно), туман для каждой локации,небо. То получится очень приличная картинка. А если конкретно взяться и перемоделировать ВСЕ, и оптимизировать двигатель, чтоб смог все это обрабатывать? Ну подумаешь получим другую уже игру, но зато огого какую)) WebZen отдыхать будет...

 

Похожие темы (5)

Новый Nano Launcher для MU Online

Автор nanoman


Сообщений: 37
Просмотров: 24859

MU Online Clicker: как автокликер на ASM помог изучить C++ и PHP

Автор LeGrand


Сообщений: 36
Просмотров: 17781

Сообщений: 11
Просмотров: 8261

Новый сезон MU online: все о разработке

Автор Killbrum


Сообщений: 127
Просмотров: 43915

Серверные файлы Acgroup Season 5: разработка в MU online

Автор Crazzy-


Сообщений: 32
Просмотров: 15708