{{notification.text}}

MirGames

26.12.08 16:44
0
Есть ли какие нибудь советы? :blink:
#1
26.12.08 16:51
0
Думаю, стоит посмотреть как это сделано у других. Например, в eXgine.
#2
26.12.08 16:57
0
division
А хде ето мона посмотреть?
Отредактировано: 26.12.08 16:58
#4
Хранитель Флейма
26.12.08 17:43
0
division
У ХПрогера оцтойный лог. Вобще никуда не годица.
Точнее годица, но он в моем понимании "не нормальный".

Нормальный в моем понимании должен как минимум содержать "спам-фильтр".

З.Ы: ПРогир сейчас прицепица :(
#5
26.12.08 17:51
0
Цитата
Как сделать нормальный лог для игры?

Игра сама его сделает :ninja:

Цитата
Нормальный в моем понимании должен как минимум содержать "спам-фильтр".

Это на уровне
Код

    Если Not(ВсеСообщения.Принадлежит(Сообщение)) то
       ВсеСообщения.Добавить(Сообщение);

?

Цитата
Есть ли какие нибудь советы?

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

Если во время выполнения, то печатай уже только при возникновении ошибок, со спам фильтром.
#6
26.12.08 18:23
0
На DTF.ru была целая статья, посвященная логам (в цикле статей, посвященных отладке). Рекомендую почитать.
#7
Хранитель Флейма
26.12.08 18:33
0
visual
Ближе будет так:

Log.Send('Test', 1);
Log.Send('AAA', 2);

И т.д, а дальше уже сам решаешь какой уровень у сообщения (можно это уровень назвать, можно "группы", смысл один и тот же). Потом позволять фильтровать все сообщения, какие-то разрешать, какие-то запрещать.
#8
26.12.08 18:51
0
И обязательно в хтмл формате, а то не лог будет, а я незнаю чО:)
#9
Хранитель Флейма
26.12.08 19:55
0
Цитата(sHaDe @ Сегодня, 14:51)
[snapback]91343[/snapback]
И обязательно в хтмл формате

А это уже по желанию и по потребностям.
#10
26.12.08 21:16
0
1) Лог должен быть потокобезопасным
2) Лог должен быть "многоуровневым" (имею в виду уровни детализации лога)
3) лог должен уметь выделять варнинги и ошибки.
4) Лог должен уметь контролировать свою длину.

ЗЫ - такой лог у меня есть )

Цитата
И обязательно в хтмл формате, а то не лог будет, а я незнаю чО

Что это за лог в хтмл формате?? )) Это уже не лог а незнаю чо ))
#11
26.12.08 21:26
0
Не мне не лог ошибок надо (славо бобу, я их пока не замечал). Мне нужен лог прохождения (во сколько начал играть, когда закончил, когда быстро проходил уровень когда медленно, когда набирал много очков когда мало и все в этом духе). Дело собственно в чем, сдесь нужно каждую переменную отдельно записывать? Или может можно все это дело как нибудь скомпоновать?
#12
Хранитель Флейма
26.12.08 21:30
0
Цитата(tormozit @ Сегодня, 17:26)
[snapback]91352[/snapback]
Не мне не лог ошибок надо (славо бобу, я их пока не замечал). Мне нужен лог прохождения (во сколько начал играть, когда закончил, когда быстро проходил уровень когда медленно, когда набирал много очков когда мало и все в этом духе). Дело собственно в чем, сдесь нужно каждую переменную отдельно записывать? Или может можно все это дело как нибудь скомпоновать?

Напиши пример: Было -> Обработали -> Получили на выходе.

А то из твоих слов не слишком хорошо понятно что ты хочешь и как это должно работать.
#13
26.12.08 21:41
0
Woolf
Цитата
Что это за лог в хтмл формате?? ))

Log.html :)

Цитата
ЗЫ - такой лог у меня есть )

Дай поглядеть :D
#14
26.12.08 21:43
0
Цитата
Напиши пример: Было -> Обработали -> Получили на выходе.

А то из твоих слов не слишком хорошо понятно что ты хочешь и как это должно работать.

Ну например заработал игрок 1000 очков, в лог записало: Время+"очки:"+колОчков

Но дело в том, что кроме очков там еще куча всего и переписывать каждую переменную в лог в ручную, по моему не правильно.

Цитата
может можно все это дело как нибудь скомпоновать?

#15
Хранитель Флейма
26.12.08 22:05
0
Цитата(tormozit @ Сегодня, 17:43)
[snapback]91355[/snapback]
Но дело в том, что кроме очков там еще куча всего и переписывать каждую переменную в лог в ручную, по моему не правильно.

По моему ты пытаешься смешивать вещи, назначение которых из разных областей.

Лог - как летописец, он пишет то что ему сказали указывая дату и время. Лог ничего не компонует.
#16
Хранитель Флейма
26.12.08 22:19
0
Идея примерно такая:

Код

type
  TPlayerStat = record
    Name : String;
    Value : Variant;
    ToLog : Boolean;
  end;

  TPlayer = class
  private
    PlayerStats : array of TPlayerStat;
  public
    function GetStats(const StatName: String): Variant;
    procedure SetStats(const StatName: String; const Value: Variant);
  public
    property Stats[const StatName : String] : Variant read GetStats write SetStats; default;
  end;

{ TPlayer }

function TPlayer.GetStats(const StatName: String): Variant;
var
  I : Integer;
begin
  for I := 0 to High(PlayerStats) do
    if PlayerStats[I].Name = StatName then
    begin
      Result := PlayerStats[I].Value;
      Break;
    end;
end;

procedure TPlayer.SetStats(const StatName: String; const Value: Variant);
var
  I : Integer;
begin
  for I := 0 to High(PlayerStats) do
    if PlayerStats[I].Name = StatName then
    begin
      PlayerStats[I].Value := Value;
      PlayerStats[I].ToLog := True;
      Break;
    end;
end;
#17
26.12.08 22:23
0
Цитата
Лог ничего не компонует.

Не, не.. "Скомпоновать" в смысле уменьшить размер кода что пишет в лог.
#18
Хранитель Флейма
26.12.08 22:25
0
Используешь примерно так:

Player.Stats['Жизней'] := 5;
Player.Stats['Рейтинг'] := 25;

У этого же класса реализуешь метод "Записать параметры в лог", вызываешь где-нибудь раз в 1 секунду уже после всех основных расчетов. В методе пробегаешься по всем записям из массива PlayerStats, отбираешь все у которых ToLog = True, и пишешь в лог имя параметра, значение параметра и вобщем все что тебе нужно. После этого выставляешь для этого элемента значение ToLog в False.

Вобщем вот и все. Каждый раз когда ты будешь присваивать некому параметру новое значение ToLog будет снова выставляцо в True и история будет повторяцо. Ну ты понял.

Цитата(tormozit @ Сегодня, 18:23)
[snapback]91358[/snapback]
"Скомпоновать" в смысле уменьшить размер кода что пишет в лог.

Опять не понятно что имел в виду. Пиши по формуле "У меня есть" -> "Я хочу получить". Вопрос "что мне сделать, что бы прийти из У меня есть в Я хочу получить?".

Так будет понятнее.
#19
26.12.08 22:39
0
Цитата
"Скомпоновать" в смысле уменьшить размер кода что пишет в лог.

Опять не понятно что имел в виду. Пиши по формуле "У меня есть" -> "Я хочу получить". Вопрос "что мне сделать, что бы прийти из У меня есть в Я хочу получить?".

Так будет понятнее.


В принцепе это уже не нужно, ты уже ответил на мой вопрос. :)
#20
Хранитель Флейма
26.12.08 22:40
0
tormozit
Помогло? :)
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}