No updates today. Ran a few tests, realized some stuff, thought about some stuff, figured some stuff out, but mostly slacked off.
I also work on other projects from time to time, mostly under other aliases.
I like learning about and writing cryptography-related software, new systems utilities, etc, and also enjoy a bit of video and music editing, playing musical instruments (sometimes live in front of an audience like a jackass 🤪), activism, writing articles, trying out new software, etc.
I’m also an avid consumer of twitch memes and youtube debates.
My tiny OT community for Open Tibia game developers :)
The purpose of this community is first and foremost to have a place where OT developers can chat, chill and have a good time without constant bickering and fighting.
Secondly to serve as a democratic forum and platform for open discussion, critique, ideas and suggestions, and to help the OT community out wherever we can and is reasonable i.e. by hosting this wiki where everything related to Open Tibia (software, projects, people, communities and histories) can be documented, and trying to create a centralized directive to host links to alternative OT communities (which OTLand strictly prohibits despite not actually having any public rule against it), OT lists, software alternatives, etc.
You can find the rest of the community links on the right side of this blog.
Due to a general lack of user activity and interest I started this blog to blog about some of the OT stuff I’m working on instead.
Behind the scenes
Hi, I’m source😎. I started, run and maintain OpenTibia.dev on my own.
I also work on my own OT projects and decided to make this blog as a means to publicize changes and updates to all my Open tibia related projects.
For the past year and a half I’ve been working on an otclient version with all the original 7.x client details, mechanics and bug fixes to make the client function as smoothly and accurately as the original tibia client. Did about half of the fixes myself and spent about $1k on the rest.
- Full original client interface and mechanics except for the Help function, main Options interface, and lighting (heavily reworked, but not perfected).
- Tons of bugs fixed.
- Tons of unique mechanical fixes not fixed by other big boy clients including Medivia.
- Attention to detail. Fine tuning of mechanics to work exactly like the original.
- Builtin cam recorder and player.
- Multilayered anti-cracking security/obfuscation features.
- Enhanced logging system and other dev functionality.
Mainly minor fixes, reworking lighting, 1 movement bug I’ve been postponing forever, and lofty future ideas like Medivia’s sound system.
Once in a while I also add some new cool random features and hotkeys 😎.
Classic OTClient vs Medivia Client
- Sound system
- Tons of assets and their own custom sprites all encrypted
- Client updater
- Nice informational widgets to get you started as a new player
- In-game donation store
Classic OTClient Advantages
- Full classic interface with every detail working as intended
- Builtin cam player/recorder that should support every Tibia version >7.6
- 2 medium* bug fixes that Medivia hasn’t fixed (*fairly significant to gameplay)
- At least 9 minor* bug fixes that Medivia hasn’t fixed (*inconvenient)
- In addition there’s at least 5-8 more missing things that technically doesn’t count as bugs such as missing hotkeys and other functionality that may or may not have been intended
- Working on sound system and encrypted assets, basic functionality already seems to be working just a couple of hours in
To Medivia’s credit, they have fixed more minor bugs than any other competitor’s client I’ve looked at and are still a class A competitor and long-term innovator of proprietary Open Tibia development.
My most interesting fully solo OT project so far.
The server runs on pixie dust and haters’ tears.
Core basic features
- Tiny codebase (<10% of TFS’s sources).
- Simple and elegant system design, far less source files (30 to TFS’s 163), ASCII file formats for all server data, elegant solutions to reduce unnecessary complexity.
- Multicore map loading (took about 1 day to add including bug fixes).
- Linux, Windows and probably Mac compatible (untested).
- 10 seconds compilation time on Linux (single core, full rebuild), 40 seconds on Windows (3 seconds without optimization and multicore disabled).
- Builtin login server & more.
- /a length
- /z aid
- /goto x,y,z
- /save accountid (saves player data in memory to accountid x)
- /reset (kicks and resets player data in current account)
- /town name
- /speed number (0 is max)
- /flags number (set player flags)
- /dump x,y,z (dump map data on tile x,y,z in console)
- /taint (defunct: marks tiles explored with persistent “taint” effect, was used to explore a weird persistent “silently drop connection” bug that’s since disappeared)
Pre git (2020)
Not much documentation to go on here as I didn’t use git or anything until 2021. There’s been tons of bugs, bug fixes and rewrites. Server has been fully rewritten 3 times in the early stages to improve core design.
Server version 1 had a lot of game mechanics working such as moving items, stacking items, use item -> replaces items such as torch, vials, etc, some EQ and containers mechanics, but this server version had tons of core issues so to speak.
Version 4 has great core design, but less game mechanics.
Some pre-git changes/fixes documented in text files:
- Fixed /a 1 (player should walk, not teleport, this short distance).
- Old memory leak fixed (design issue, fully replaced).
- /save slotid command saves copy of character to slot n.
A few others from memory:
- Added (and later perfected) loading of monsters, spawning and random walking.
- Game loop frequency can be adjusted in config and changed ingame with /gamefrequency command.
- Players and monsters can no longer walk through walls and other non-traversable objects.
- Instruments works because music rocks :)
Post git (Dec 30th 2020)
- Multicore map loading – reduces map loading time by 300% when using 4 cores (Dec 30th 2020).
- Maximally optimized map loading – 2x speed from last commit + 2x with -O1 (Jan 2nd 2021).
- Fixed bug: random ~1% loss of tiles caused by unreliable C function (Jan 2nd 2021).
- Fixed bug: ~5% chance of segfaulting during map load after introducing multicore map loading – only 1 known segfault bug left in server which is an easy fix (Jan 3rd 2021).
- Added tools: manual and automated networked map data analysis tool and objects.srv to json converter (Jan 14th 2021).
- Made 1 core file/class independent of other code (Jan 15th 2021).
- Added /taint command to explore strange “silently dropped connection” bug (Jan 21st 2021).
- Got rid of persistent 6 months old “silently dropped connection” bug with still unknown origins (Jan 21st 2021).
- Minor bug fix: logging out -> inbuf/outbuf error (Jan 25th 2021).
- Minor documentation/tool feature (Jan 25th 2021).
- Minor update: Some more code portability/independence, added function, secret tweak, added bench for items class (Feb 22nd 2021).
- Large update: 15 fixes + other improvements including fixing everything related to creature movement (March 23rd 2021).
- Minor update: 3 fixes, 2 changes, 1 of the fixes being sending too many floors underground (March 27 2021).
- Large update: a few small fixes, many medium fixes + 1 weak memory leak + 2 segfault fixes, fixed spawning algorithm, preparing to implement A* (Apr 9th 2021)