Subversion Repository Public Repository

fonline_sdk

This repository has no backups
This repository's network speed is throttled to 100KB/sec

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Сервер, клиент, инструментарий синхронизированы между собой.

Структура репозитория:

- Root                           Корневая директория
  License.txt                    Лицензия
  ReadMe.txt                     Данный файл

-- Client                        Клиентское приложение
   Clean.bat                     Очистка клиента от временных файлов
   FOnline.exe                   Windows клиент
   FOnline.pdb                   Символы для отладки Windows клиента, чтобы при падении дамп файл был читаемым
   FOnline                       Linux клиент
   FOnline.cfg                   Конфиг файл клиента
   NameColorizing.txt            Список имен для работы механизма раскрашивания контуров и ников
   IgnoreList.txt                Список имен для работы механизма игнорирования
   FOnlineSingleplayer.exe.lnk   Ярлык на запуск однопользовательского режима
--- data                         Данные клиента

-- Docs                          Документация
   FOnlineRu.chm                 Основная документация по SDK на русском языке

-- Server                        Сервер
   Clean.bat                     Очистка сервера от временных файлов
   Clean.sh                      Очистка сервера от временных файлов
   FOnlineServer.exe             Серверное приложение для Windows
   FOnlineServer.pdb             Символы для отладки Windows сервера, чтобы при падении дамп файл был читаемым
   FOnlineServer                 Серверное приложение для Linux
   FOnlineServerDaemon           Серверное приложение для Linux в виде демона
   FOnlineGameServer.bat         Запуск только игрового сервера
   FOnlineUpdateServer.bat       Запуск только сервера обновлений
   FOnlineServer.cfg             Конфиг файл сервера
   FOServerService.exe.lnk       Регистрация (запуск, если уже зарегестрирован) сервера как сервис (служба)
   FOServerServiceDelete.exe.lnk Удаление зарегестрированного сервиса (службы)
--- data                         Различные данные
--- dialogs                      Диалоги
    dialogs.lst                  Список диалогов и соответствующих им идентификаторов
    *.fodlg                      Файлы диалогов, открываются с помощью DialogEditor
--- dumps                        Дамп файлы
--- logs                         Логи
--- maps                         Карты
--- profiler                     Данные профайлера
--- proto                        Прототипы
--- save                         Сохраненные данные о мире и клиентах
--- scripts                      Скрипты
--- text                         Тексты
--- update                       Данные для обновления клиента

-- Tools                         Инструментарий
--- ASCompiler                   Компилятор скриптов
--- CodeAnalyzer                 Анализатор данных профайлинга
--- DataPatcher                  Программа для работы с данными клиентов
--- DialogEditor                 Редактор диалогов
--- InterfaceEditor              Редактор игрового интерфейса
--- Mapper                       Маппер
--- MrFixit                      Редактор крафта
--- ObjectEditor                 Редактор объектов
--- Runtime                      Рантайм для приложений СДК

Commits for fonline_sdk/ReadMe.txt

Diff revisions: vs.
Revision Author Commited Message
468 Diff Diff cvet picture cvet Tue 06 Jan, 2015 09:50:43 +0000

Обновлены лиценция и базовый ридми.

412 Diff Diff cvet picture cvet Sun 15 Sep, 2013 18:23:53 +0000

Исправлен баг с загрузкой ZIP/BOS файлов, если в пути клиента находятся не ASCII символы. Баг с 400 ревизии.

При формировании креш дампов при Access Violation дополнительно записывается тип операции (write/read) и адрес ошибочного обращения.

В репозитории удалена папка Stable, т.к. архивы недоступны ввиду потери хостинга. Информация о стабильных ревизиях перенесена в ReadMe.txt.

400 Diff Diff cvet picture cvet Sat 27 Apr, 2013 19:27:18 +0000

Добавлена поддержка Unicode, кодировка UTF-8.
Все текстовые файлы переведены в кодировку UTF-8 (без BOM).

Обновлен весь инструментарий на предмет совместимости с юникодом.
В том числе редактор прототипов (ObjectEditor). (by Ghosthack)

Была исправлена работоспособность и модифицирована глобальная функция клиента/маппера
void KeyboardPress(uint8 key1, uint8 key2, string@+ key1Text = null, string@+ key2Text = null)
добавлены опциональные параметры key1Text/key2Text, которые будут переданы в обработчики key_up/key_down вместе с переменными key1/key2.

Для обработки ввода была добавлена константа DIK_CLIPBOARD_PASTE, событие которой означает вставку текста с буфера обмена.

Изменен принцип ввода с клавиатуры и работы с языком ввода.
В зарезервированные функции клиента/маппера key_down/key_up теперь передается параметр string& keyText, в котором будет записан текст на нужном языке, базирующийся на текущем языке ввода ОС.
Переключение раскладки клавиатуры теперь контролируется ОС, а не программой, ввиду чего была убрана глобальная переменная ChangeLang и соответствующие ей константы. Так же удалена глобальная функция int GetKeybLang().
Удалена функция перевода текста из одного языка в другой по кнопке Pause (пользуйтесь сторонними программами, например, PuntoSwicher).

Проверки корректности имени перенесена в скрипты, клиент/сервер проверяют только длину, корректность UTF-8 символов и отсутствие знака ‘*’ (которым в некоторых местах потом заменяется пробел).
В зарезервированную клиентскую функцию 'bool player_data_check( string& name, int[]& data ) добавлен параметр ‘string name’ для проверки его корректности перед регистрацией.

В скрипты сервера/клиента/маппера добавлены глобальные функции:
uint DecodeUTF8(const string& text, uint& length) - декодирование символа из текста (const string& text) с возвращением его UCS кода и длинны кода в строке (uint& length). Если символ не распознан, то будет возвращен код 0xFFFD.
string@ EncodeUTF8(uint ucs) - кодирование UCS кода в строку.

Изменился формат файлов шрифта fofnt, теперь в первую очередь должен присутствовать тег с версией формата (Version).
- изменился формат тега Letter, c “Letter 65 # 'A'” на “Letter 'A'”;
- добавлен тег LineHeight, который указывает на высоту строки шрифта (если не указан, то высота берется по самому большому символу из всего списка);
- в имя атласа для шрифта Image можно добавить символ ‘*’, тогда цвет текстуры нормализуется с любого на RGB [128, 128, 128] (только для OpenGL рендера);
- метка ‘End’ прекратит парсинг файла (для отладки).
Эти шрифты теперь кешируются в бинарном виде, их загрузка теперь будет очень быстрой, после первого запуска. Рекеширование идет, если изменилось время записи файла.
В основной шрифт Default.fofnt добавлены дополнительные символы юникода из шрифта DefaultExt.fnt (хотя сам шрифт нигде не используется), в связи с чем клиент теперь поддерживает не только английский и русский язык, как минимум для шрифта по умолчанию.

Обновлена работа со строками.

Индексный оператор теперь возвращает строку содержащую нужный символ, соответственно сравнивать теперь необходимо не с символьными константами (‘X’), а со строками (“X”). Пример:
string s = “abcd”; // s[ 1 ] вернет "b"
string s = “abcd”; // s[ 4 ] исключение - выход за пределы массива
При присвоении с индексным оператором идет удаление символа и вставка присваиваемой строки, примеры:
string s = “abcd”; s[ 1 ] = “g”; // s == "agcd"
string s = “abcd”; s[ 2 ] = “xyz”; // s == "abxyzd"
string s = “abcd”; s[ 1 ] = ""; // s == "acd"
Появилась возможность индексировать строки с помощью отрицательных значений. Это применимо так же к глобальным функциям для работы со строками (substr, findFirst, findLast и т.п.) для параметра ‘int start’. Примеры:
string s = “abcd”; // s[ -1 ] вернет "d"
string s = “abcs”; // s[ -100 ] исключение - выход за пределы массива
string s = “abcd”; s[ -3 ] = “X”; // s == "aXcd"
string s = “abcd”; s[ -1 ] = ""; // s == "abc"

Метод length() теперь возвращает количество символов юникода в строке, а не количество байт, т.е. как метод lengthUTF8(), который сейчас удален (замену старому length() см. ниже).

Обновлены все функции для работы со строками (substr, findFirst, findLast и т.п.), теперь они так же работают с символами юникода, а не байтами.

Переименован метод resize(uint), см. ниже.

Для работы с байтами в строке добавлены следующие методы:
uint rawLength() const - вместо предыдущего length();
void rawResize(uint size) - вместо resize(uint);
uint8 rawGet(uint index) const - вместо старого индексного оператора;
void rawSet(uint index, uint8 value) - вместо старого индексного оператора.

Исправления по трехмерной графике.

Исправлена утечка памяти при работе с эффектами.

В формате fo3d тег Mesh теперь может принимать значение -1, это означает, что установка текстур, эффектов и отключения материалов (теги Texture, Effect, DesableSubset) будут касаться всех мешей в текущей модели. Так же теперь этот тег по умолчанию равен -1, а не 0 (т.е. установка для всех моделей, а не только для первой).

Исправлено использование эффектов в 3д моделях OpenGL ренеринга (до этого они не устанавливались и всегда использовались эффекты по умолчанию).

Другое.

Оптимизирована скорость загрузки карт (fomap) и прототипов (fopro) файлов.

398 Diff Diff cvet picture cvet Tue 23 Apr, 2013 18:25:30 +0000

На данный момент разрабатывается версия игры поддерживаемая Unicode, доступна она по этому адресу
https://xp-dev.com/sc/179122/HEAD/
https://xp-dev.com/svn/fonline_sdk_unicode

О багах сообщайте на irc канале #fodev (forestnet.org).

По окончании тестирования тот репозиторий будет слит с текущим.

63 Diff Diff cvet picture cvet Mon 25 Oct, 2010 23:30:46 +0000

Добавлена возможность запуска сервера как сервиса (службы).
Для регистрации/запуска используйте ключ “-service” (ярлык FOServerService.exe.lnk).
Для удаления используйте ключи “-service -delete” (ярлык FOServerServiceDelete.exe.lnk).

Добавлена возможность логгирования с помощью в функции OutputDebugString.
Сам лог можно перехватывать (даже удаленно) с помощью программы DebugView
http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx
Для включения в конфиги сервера и клиента добавлена опция LoggingDebugOutput.

Сервер/клиент/маппер теперь будут нормально работать при запуске с некорректными активными директориями. При запуске устанавливается текущая директория исполняемого файла.

Исправлен баг с отсутствием замены буквы ‘x’ на ‘ч’ во встроенном пунто свитчере.

Исправлено падение при пошаговом режиме и некорректной работе Map::GetCritter(uint critterId).

Translations of commit history you can found here: http://www.xp-dev.com/forum/topic/3220

13 Diff Diff cvet picture cvet Thu 02 Sep, 2010 17:46:31 +0000

Первая стабильная версия, в архиве.

8 cvet picture cvet Tue 31 Aug, 2010 20:35:51 +0000

Исходное состояние.