• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Source's custom OT game engine (TypeScriptFTW)

Update since the 13th of Jan:

Server updates:
* Fixed some bugs (7 bugs).

Full git changelogs:
  • Replaced .health with .getStat(STAT_HEALTH) and .setStat(STAT_HEALTH, value)
  • Fixed bug with creatures not dying at 0 health
  • Fixed bug with thousands of players not being loaded due to 0 health
  • Added tile loops for checkMoveUse to loop through all items when checking for MoveUse Events
  • Fixed monsters healing causes damage to themselves
  • Items being added to inventory prioritizes inventory > containers in inventory
  • Capacity doesn't change to capacitymax when regenerating health

Client updates:
  • Massive improvements to the 3D sound system; moving sounds (missiles), sounds attached to item objects so they can be moved around, and sound from items in inventory, all of these had their own challenges.
  • Added a bunch of sounds

Full git changelogs
  • Added serpent spawn, orc1234 and arrow to /sounds
  • Added support for moving sounds, such as missiles
  • Improved delay formula for playFileMove
  • Added connections between SoundSources and Things such that moveable objects can now make sounds too!
  • Play inventory sounds without position (without 3D)
  • Stop all audio on death and on logout
  • Also don't play creature sounds after death until relog
  • Improved sound levels of various audio files
  • Improved lastPlayed system in g_custom when playing sound files
  • Moved a couple of audio files to effects where they belong

Other:
* Also wrote a mobile app in Python that lets me run code (similar to all of these "online code compilers", except can be used offline on your mobile) in Python on my mobile. Supports error handling (showing errors/stacktraces in console), supports defining functions, executing functions, inspecting modules, using modules, etc, includes all standard Python3 modules + numpy and lets you even manipulate the app itself if you want.

Full git changelogs:
  • Init: App with 4 screens, currently only 1 used, swiping activated, numpy and PIL included
  • All screens can be swiped and screen (nr) is actually updated when screen is changed
  • Two screens being used
  • Figured out how to do Layouts the right way
  • Eval + Exec subapp on Screen 2
  • text_size wrapping for Label at Screen #2
  • inspect() function
  • fps and event monitor activated
  • screen switching directions
  • better code abstraction for screens
  • redirect stdout to Label on Screen #2 when doing exec(...)
  • relative sizes implemented at Screen #2
  • ScrollView implemented with automatic scrolling down to Label2 widget on submit
  • forgot to mention both orientations enabled in previous commit
  • reimplemented FPS counter manually because the built-in monitor's position is broken on Android

Updated client sound system demo with some royalty-free demo sounds:
Regarding audio, if you have something on the right, you can still hear it with your left ear; it's just louder on the right. I feel like in the video, the torch plays only from left or right when it's on the west or east of the character.
 
Regarding audio, if you have something on the right, you can still hear it with your left ear; it's just louder on the right. I feel like in the video, the torch plays only from left or right when it's on the west or east of the character.
I got the complete opposite report to yours just a few days ago telling me that they felt like the water wasn't loud enough in both ears.
My answer to them is (I didn't actually respond, but if I were to respond, this would be my response) - that's the point of 3D.
My answer to you is - the water effect is just louder than the torch, that's why you don't hear it. OpenAL takes care of the handling of 3D, so there's nothing I can do about that anyways even if I wanted to, but you'll find that it's just a matter of how loud the sound is whether you'll hear it in the other ear or not.
In fact just to make sure I just tested it out: I pulled out my left speaker and tried to listen to the torch, and could still hear it when the character went east and the torch was to the west. It was actually harder to hear the water with just the left speaker, but I increased the volume and could hear it no problem.
 
Update since Jan 29th:

  • Bunch of bugs, important and less important ones, fixed.
  • Added 70% of player spells with real tibia RE based formulas.
  • Added distance weapons (wands, rods, throw weapons, bows/crossbow & all ammunition) w/ walk delay, randomized endPosition for shield blocked distance attacks and ThrowFragility (item breaking based on chance%).
  • Moved a bunch of things to gameLoop such as food regen and player attacks.
  • Implemented canThrowObjectTo from TFS for functions like distance attacks and monster distance spells, meaning they no longer throw spells through walls or "Unthrow" items.

Since imgur is down there won't be any images unfortunately this time. I will try to post all images/gifs from the last update in the next update if imgur is up next update.

Full changelogs:
  • Seemingly fixed tryAgain walk issue
  • Fixed exani tera
  • Fixed moving the same items on top of each other -> not sending gameSendAddObject but gameSendUpdateTile instead
  • Fixed fatalError when placing inventory item onto expiring item
  • Fixed burst arrow only shooting once
  • Added throwables
  • Fixed monster defense against distance weapons (shouldn't be 0 after all)
  • Added randomized missing ammomissile and poofs when distance attack poofs
  • Added HEALTH_MAX and MANA_MAX to level advancements, distance advancements and wand/spells -> magic level advancements
  • No more "Nothing is written on it" when checking corpses
  • Cimported fast_int32_t stuff for C++
  • Re-added walking delay for dist/wand
  • Spell effect for conjuring
  • Increase distance skill when bloodhit [max 30] > 0
  • Implemented world.canThrowObjectTo (sight checking)
  • Added canThrowObjectTo to player distance weapons and monsters spells
  • Capacity multiplied by item count
  • Previous commit: no more shielding for creatures when they are attacked by a distance attack
  • Fixed exevo con bugging out when landing on ground (basecreature:addToInventory)
  • Added a few more spells including exori
  • Fixed 100% CPU usage when meleeing a creature
  • Fixed poison arrow damage
  • Fixed monsters no longer attacking while player attacks something
  • Fixed monsters no longer damaging players with melee
  • Couple more spells
  • Wand and distance weapons
  • Fixed IMPACT_CONJURE count
  • Added more spells
  • Minor changes and bug fixes
  • Fixed alevo itemid
  • Added some more spells (finished list of spells part 1, but not all attributes and not part 2)
  • Basecreature:computeDamage() method -> spell magic formulaes
  • Spells are now stored in unordered_map instead of set + improved spells parsing a little
  • Replaced stoi(s.c_str()) with stoi(s) in cppplayer:loadInventory
  • Started writing player spells functions -> added exura, exura gran, exura vita, adura gran and adura vita
  • Relative value assignment supported for creature:setStat(...)
  • Fixed food regen (now using gameLoop for the authentic experience; other things belong here too)


In other news we are planning on a pre-alpha testserver hopefully by the end of 2024.
This test server will likely not let you create or maintain/permasave your own character yet, but will give you access to tens of thousands of characters that can you experiment on with a >= 100x exp ratio, having fun by yourself or with friends, play as a semi-GM that can create items, teleport wherever you want and many other fun commands, hunt or do quests, etc, to test the server out & help me find bugs at the same time.

Thanks for reading, cheers! :)
 
Update since last couple of weeks:
* Various bug fixes & changes

Truth is I only worked a couple of days on the server these past couple of weeks, specifically today and yesterday.
Been busy working on other stuff in this time period.
I also discovered that Imgur is not down, it just decided to block my VPN provider for some reason <.<

Here's a couple GIFs from the last update (wand demo). Dist weapons was also implemented, but I didn't bother recording it:
Today's random recording, the hunter/monster spam and 2 cache movement was added today (also fixed a bug in this recording after recording):

Full changelogs:
  • Monsters spell cooldowns reset when monster moves
  • Implemented half of realots islagging system
  • No turnToCreature in activeLoop if the monster does not have any attack strength
  • Always turn to creature otherwise even if is not casting spells
  • Monsters turn to target like they used to even if in range by =2 SQMs
  • Implemented monster radius; fleeing, and non-fleeing -> poof
  • Monsters now has the correct 2 steps directions cache (again)
  • Added world.addItemTop()
  • Fixed world.addItem() a bit
  • Hopefully fixed fatalError -> loop.call_soon(scheduleFinished) before log() in case log file has closed
  • Hopefully improved log() to check for closed fh, print and return if is the case
  • Fixed monsters no longer instahitting when player walks up/down and is in range

Cheers!
 
Last edited:
Excited for this early spring update, March 14th:

Major changes:
  • Fixed pathfinding not always finding the shortest path due to a previous optimization update leaving out a crucial part to ensure the shortest path is always found
  • Optimized the equivalent of getSpectators(), increasing performance by 100% (2x perf), reducing a screen full of rats CPU usage from 6% to 2-3% (0.3-1% IDLE, so perf is potentially 3-4x perf, but lets be conservative and say 2x)
  • Lots of fixes including limiting moving items in inventory and many other changes, delays set after attacking when changing weapons, fixing an error where monsters with weapons like wands in their inventory bugs out attacks, etc

getSpectators (gameGetCreatures) optimization (2-4x perf):

Fixed pathfinding ALWAYS finding the shortest path from now on even after a quirky massive pathfinding optimization:

Changelogs:
  • Should be no more double walks by creatures
  • Weapon delay time when changing weapon or new ammo
  • Inventory body position requirement
  • /gm when deactivating GM has monsters attacking the player even when within physical proximity
  • Merge items in inventory
  • Dragon Wand bug should be fixed
  • Fixed slow/stuttering player movement again
  • NPC activation
  • Old forgotten fix: All player attacks including melee attacks only happens when player is standing still for a brief moment
  • Optimized/cached gameGetCreatures:
  • isMonster function
  • isPlayerTeam function
  • addWindowCids function
  • removeWindowCids function
  • spawn function
  • Also:
  • playerPtr and npcPtr
  • Microseconds for log() -> print
  • Fixed when logging into GM char: Fatal Error: Melee skill level 0 < 10
  • FindPath improved: monsters now always find the shortest route to their target, caveat: segfaults without checking curNode.parent at end (bug?)
  • When a player dies it loses all exp, should only lose 10%
  • Minor changes
  • Poofing monsters now respawn later on
  • Broke exp either during this commit or previous ones, fixed now
  • From no target to attacking creature with wand or dist gives 0.1s delay using targetexhausttime instead of nextwalktime, improving walking
  • Fixed creatures don't "instawalk" anymore when target moves
  • Set gplayer to NULL if deleteCreature(cid) == gplayer.cid
  • Hopefully fixed massive creature deactivation?
  • Fixed monsters attack repeatedly when reaching the target or the target moves in proximity to the monster
  • Correct spell delay for monsters is 1 seconds
  • Fixed distance creatures melee attacking target by adding melee parameter to canAttack(...)
  • Player when targetting a new creature cannot move for about 0.1s (rubberbanded back)
  • Fixed players attack creatures when followmoding them
 
Been sick with the Noravirus last week. Also been busy doing other things, more news about that soon.

Major changes:
  • Re-added opening backpacks back and fixed expiration of items in backpack and in inventory
  • Added three distance attack accuracy algorithms in config; TFS, retro (real tibia) or realism (my own tweak balancing paladins a little better and make their miss% more like real life)
  • Other bug fixes

Full changelogs:
  • Added expiration to basecreature::addToInventory
  • Opens backpacks again
  • Can move items to backpack (previous commit(s) set inventory limits without checking for if destination y pos is >= 64)
  • Expiration of items in backpacks
  • Added canWalk(Direction) and replaced all unsigned char direction with Direction direction
  • Armor is not being loaded in loadInventory -> improved loadInventory loop and fixed issue
  • Implemented config.distanceMissAlgorithm with 3 different options including my own twist "realism" with among other things 0% hitchance at range 0
  • Distance attack miss chance (from TFS 1.2)
  • Fixed throwable being dropped on ground and effect and such
  • Changing weapon should set a 2s delay regardless of weapon type, but only if not switching weapon between hands
  • Two handed weapons not allowing placing other stuff in hands

I'm considering releasing the data files together with a binary (closed source) server for those who want to try to host this themselves in the upcoming days, so stay tuned.
 
Been sick with the Noravirus last week. Also been busy doing other things, more news about that soon.

Major changes:
  • Re-added opening backpacks back and fixed expiration of items in backpack and in inventory
  • Added three distance attack accuracy algorithms in config; TFS, retro (real tibia) or realism (my own tweak balancing paladins a little better and make their miss% more like real life)
  • Other bug fixes

Full changelogs:
  • Added expiration to basecreature::addToInventory
  • Opens backpacks again
  • Can move items to backpack (previous commit(s) set inventory limits without checking for if destination y pos is >= 64)
  • Expiration of items in backpacks
  • Added canWalk(Direction) and replaced all unsigned char direction with Direction direction
  • Armor is not being loaded in loadInventory -> improved loadInventory loop and fixed issue
  • Implemented config.distanceMissAlgorithm with 3 different options including my own twist "realism" with among other things 0% hitchance at range 0
  • Distance attack miss chance (from TFS 1.2)
  • Fixed throwable being dropped on ground and effect and such
  • Changing weapon should set a 2s delay regardless of weapon type, but only if not switching weapon between hands
  • Two handed weapons not allowing placing other stuff in hands

I'm considering releasing the data files together with a binary (closed source) server for those who want to try to host this themselves in the upcoming days, so stay tuned.
Looking good m8!

Hope you are feeling fully better now.
Have a good one!
 
@Source i will have a go and look at this for you btw. Even tho i have very little time.

I really like that you really went for this and made something nice.

Keep going with this bro this is awesome work.
 
Update time!

Major changes:
  • Cool and important bug fixes :]
  • Added updater to the server for prepared binary release
  • Started rewriting setCondition system; now uses USR player file which is being iterated over in gameLoop

Changelogs:
  • Updater implemented
  • Distance creatures now walks towards target when they can't throwObjectTo, but they don't walk instantly back like they should if the position is suboptimal
  • Conditions (icons) are removed when cycle == 0
  • world2.setItem() and various other functions now removes/adds TILEFLAGS_UNTHROW for example when doors are opened
  • NPCs now heal Poison, Burning and heals to minimum HP
  • Added all SkillsInternal1 enums for SkillsInternal completeness
  • Moved code from gameLoop to basecreature::updateConditions() and improved code slightly
  • Rewrote regen algorithm (in effect original realots algorithm this time; ticks happens even while in PZ)
  • Rewrote setCondition system w/ getSkillsInternal(...) and setSkillsInternal(...)
  • Movement bug for default GM characters due to gplayer.flags = 0
  • NPC won't [always] move in PZ for some reason - not sure if this is fixed or not
  • Fixed creatures can walk through other creatures
  • Fixed character health set to 0% due to round() when health <0.5% and walking up/down
  • Cy3.0.10 compatibility update
  • Added guards responding to vulgarities
  • HP=1
  • ChangeTo fix
  • Fixed dustbins (and others?) + segfault when items being deleted while iterating over items in onPush
  • Fixed eating food not deleting food in container/inventory (deleteItem 0xFFFF)
  • Fixed ChangeUse not working for containers/inventory incl expiration (world2.setItem 0xFFFF)
  • Fixed addToInventory -> expiration with wrong pos
  • cr.loadInventory() to change light and stuff when an item expires in inventory
  • OnUse Change item had wrong slotid offset by 1
  • fixed addToInventory added item at end of container

Yet to do: Have to wait with releasing the binary files for another day since I'll need to release a client as well that you can login with.
Soon though, soon :)

Cheers!
 
 
Update time!

Major changes:
  • Cool and important bug fixes :]
  • Added updater to the server for prepared binary release
  • Started rewriting setCondition system; now uses USR player file which is being iterated over in gameLoop

Changelogs:
  • Updater implemented
  • Distance creatures now walks towards target when they can't throwObjectTo, but they don't walk instantly back like they should if the position is suboptimal
  • Conditions (icons) are removed when cycle == 0
  • world2.setItem() and various other functions now removes/adds TILEFLAGS_UNTHROW for example when doors are opened
  • NPCs now heal Poison, Burning and heals to minimum HP
  • Added all SkillsInternal1 enums for SkillsInternal completeness
  • Moved code from gameLoop to basecreature::updateConditions() and improved code slightly
  • Rewrote regen algorithm (in effect original realots algorithm this time; ticks happens even while in PZ)
  • Rewrote setCondition system w/ getSkillsInternal(...) and setSkillsInternal(...)
  • Movement bug for default GM characters due to gplayer.flags = 0
  • NPC won't [always] move in PZ for some reason - not sure if this is fixed or not
  • Fixed creatures can walk through other creatures
  • Fixed character health set to 0% due to round() when health <0.5% and walking up/down
  • Cy3.0.10 compatibility update
  • Added guards responding to vulgarities
  • HP=1
  • ChangeTo fix
  • Fixed dustbins (and others?) + segfault when items being deleted while iterating over items in onPush
  • Fixed eating food not deleting food in container/inventory (deleteItem 0xFFFF)
  • Fixed ChangeUse not working for containers/inventory incl expiration (world2.setItem 0xFFFF)
  • Fixed addToInventory -> expiration with wrong pos
  • cr.loadInventory() to change light and stuff when an item expires in inventory
  • OnUse Change item had wrong slotid offset by 1
  • fixed addToInventory added item at end of container

Yet to do: Have to wait with releasing the binary files for another day since I'll need to release a client as well that you can login with.
Soon though, soon :)

Cheers!
You are going nicely!

Would love to see how it all behaves and feels ^^

Good work m8
 
Time for binary/test release guys :)

Due to new 2020 rules I can't post this in the Downloads section even though Realots cip files is there without sources (pre 2020), so I'll have to post it here (no direction from staff, but I checked Advertisement, and that only counts for hosted servers, so this is the only place left).

Today I'm going to be releasing the data files and compiled server binary of my TaoEngine / formerly known under the temporary alias TSSFTW engine together with my compiled client.

For those who don't know, this engine is based on RealOTS data files including USR data files, SEC map files, DAT object files, NPC npc files, MON monster files, etc.
It's a server written from scratch, so not based on OTServ or TFS, it's similar to OpenCoreMMO, RyOT, PyOT, etc, servers fully written from the bottom up.

The game server is still in pre-alpha development, so expect a lot of bugs and missing features.

This release is only for Linux right now, native Windows support might be added back later on, so if you run Windows make sure to install WSL on your machine if you'd like to run this locally.
The server has a built-in updater that checks for and downloads newer versions automatically.

Data files download: 67.66 MB file on MEGA (https://mega.nz/file/0PkCWTqK#QX9SXc6vv-6mnJAdj_boOTLc5mvjnUuk_p8eFyT6Fgc)
Binary and config file: 879.8 KB file on MEGA (https://mega.nz/file/IL1BkSrR#mE_KqMbekj-C58xBsB_A7w_PZ81hozN0ZRMFzkmeKJs)
Client files: 18.26 MB file on MEGA (https://mega.nz/file/oXEDyaaZ#ftST2hqgMdTHEl-eeZpl3Vw-wmPgJ75_xH2axdr6Kdg)

Server packages:
Requirement (packages): python3-dev python3-gmpy2
Optional (packages): python3-uvloop

How to run server: unzip archives with tar xfz archive.tar.gz. Run ./standalone -m 1 for full map, or just ./standalone for partial 10% map (faster boot).
The server directory structure should be as follows:
  • standalone
  • config.py
  • data

Modify config.py as you wish.

Client notes:
  • If your client exits and leaves you with a missingdlls.txt in your client directory, especially if you run Windows 10 (I did a mistake before upgrading to Windows 11, so a few DLL checksums might be missing once you connect to the server or scroll with a touchpad if you're on a laptop), please post the full contents of missingdlls.txt here. Exiting is the intended function of the anti-cheat system.
  • Debian 12's wine-8.0 (Debian 8.0~repack-4) 32 bit wine and the very newest wine versions (wine-9.6-119-gb87589757b8 32+64 bit) are supported so you can run this client on Linux using wine if you wish.

Server completion status per 26th of Apr 2024:
  • Monsters should have 100% accurate melee, defense and spell formulaes (but some spells are currently not cast because of current rework of the conditions system, such as the halloween hare's outfit spells).
  • Players are partially parsed. They should have 100% accurate skills and conditions such as food regen, name, outfit, position, etc, but inventory is only partially parsed (items with a count is reduced to count = 1), and no containers in players inventory are currently parsed.
  • Monsters loot on death is currently bugged (no loot dropped). This has happened before, I must have made some mistake while changing something.
  • NPCs should have virtually all chat scripts, but does not actually do most commands yet, like buy or sell items.
  • More than half of the MoveUse scripts (click on ladder, walk down holes, walk on traps, walk on fire or energy field, etc) are done (100% of the scripts is parsed, but only >50% of the scripts are actually implemented with server logic).
  • A bunch of commands are bugged. Like alevo only creates 1 item, I broke multiple count at some point, alevo res doesn't work (use /m instead), etc.
  • There's many more bugs. You don't have to post your bugs here, I probably already know about it, but if you really want to you can post unique bugs here, namely bugs that haven't been reported by anyone else.

Use !commands for a list of commands. Some essential commands are: /m, /s, /a, /town, /n.
Login with accnr = accnr of player (highlevel characters are printed at end of boot), password = 1337.

JL2Znag.png


Happy gaming!

@Olddies @Me again @murilow1 @tarantonio
 
Last edited:
Back
Top