• 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!

Programmer Professional C++ programmer

nemezis

# Lazybones #
Joined
Jan 1, 2011
Messages
152
Reaction score
5
Location
Hole in Poland
Hello.

I am looking for c++ programmer for one of largest servers in world - narvia.eu
You must know a lot about boost, gcc, c++, threads and debian becouse i need person to optimize The forgotten server. You must know more then Elf becouse he can't help me.

How much you can earn? Over 200-500 euros, it depends on your work and skill.
If you want work for me send me PM or email [ inwob(at)tlen(dot)pl ] with something about you, your experience, portfolio and contact to you.

Sorry for my english but my private translator is offline.
Kind regards.
 
What are having performance problems with?

I would like to know as well. A re-coding of the entire server is nowhere near 500 euro I might do it for 1k Euros.

OR

You can use OTServ (Lastest revision) and switch your scripts over to their Lua style. You will find a better performance from OTServ.
 
Then on server is over then 1300 players server is lagging.
Here is part of logs.
Code:
Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls   s/call   s/call  name    
  8.20    450.41   450.41  4785414     0.00     0.00  Map::getPathMatching(Creature const*, std::list<Direction, std::allocator<Direction> >&, FrozenPathingConditionCall const&, FindPathParams const&)
  7.17    844.45   394.05 174440510     0.00     0.00  Map::getSpectatorsInternal(std::list<Creature*, std::allocator<Creature*> >&, Position const&, bool, int, int, int, int, int, int)
  5.05   1121.89   277.44 9881542274     0.00     0.00  boost::detail::shared_count::~shared_count()
  4.12   1348.42   226.53 4315796111     0.00     0.00  Creature::getPosition() const
  3.35   1532.81   184.39 73087006     0.00     0.00  Protocol::XTEA_encrypt(OutputMessage&)
  3.00   1697.89   165.08 223273186     0.00     0.00  OutputMessagePool::sendAll()
  2.50   1835.39   137.51 623541902     0.00     0.00  Map::canWalkTo(Creature const*, Position const&)
  1.82   1935.58   100.19 1639257429     0.00     0.00  ItemAttributes::getIntegerAttribute(char const*) const
  1.78   2033.55    97.97 1523266147     0.00     0.00  Map::getTile(int, int, int)
  1.50   2115.96    82.41 345998245     0.00     0.00  boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::cancel(boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::implementation_type&, boost::system::error_code&)
  1.33   2189.26    73.30 233179316     0.00     0.00  boost::asio::detail::epoll_reactor<false>::run(bool)
  1.26   2258.68    69.43 135341332     0.00     0.00  boost::detail::sp_counted_impl_p<std::list<Creature*, std::allocator<Creature*> > >::dispose()
  1.19   2323.92    65.24                             Scheduler::schedulerThread(void*)
  1.18   2388.79    64.87 164355595     0.00     0.00  boost::asio::detail::timer_queue<boost::asio::time_traits<boost::posix_time::ptime> >::timer<boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, void (*)(boost::weak_ptr<Connection>, boost::system::error_code const&), boost::_bi::list2<boost::_bi::value<boost::weak_ptr<Connection> >, boost::arg<1> (*)()> > > >::complete_handler(boost::asio::detail::timer_queue<boost::asio::time_traits<boost::posix_time::ptime> >::timer_base*, boost::system::error_code const&)
  1.00   2443.67    54.88 50049918     0.00     0.00  void std::__adjust_heap<__gnu_cxx::__normal_iterator<SchedulerTask**, std::vector<SchedulerTask*, std::allocator<SchedulerTask*> > >, long, SchedulerTask*, lessTask>(__gnu_cxx::__normal_iterator<SchedulerTask**, std::vector<SchedulerTask*, std::allocator<SchedulerTask*> > >, long, long, SchedulerTask*, lessTask)
  0.95   2496.02    52.36 170003978     0.00     0.00  void boost::asio::detail::epoll_reactor<false>::schedule_timer<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, void (*)(boost::weak_ptr<Connection>, boost::system::error_code const&), boost::_bi::list2<boost::_bi::value<boost::weak_ptr<Connection> >, boost::arg<1> (*)()> > > >(boost::asio::detail::timer_queue<boost::asio::time_traits<boost::posix_time::ptime> >&, boost::asio::time_traits<boost::posix_time::ptime>::time_type const&, boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, void (*)(boost::weak_ptr<Connection>, boost::system::error_code const&), boost::_bi::list2<boost::_bi::value<boost::weak_ptr<Connection> >, boost::arg<1> (*)()> > >, void*)
  0.94   2547.91    51.89 56023498     0.00     0.00  Game::checkCreatureWalk(unsigned int)
... and much more ...

I am using new 8 theards for few functions but it is still lagged.
I am using i7-2600, if no one will help me i will order server with Intel E3-1290v2 but i still prefer c++ preformace.

I have many logs about delayed functions, it will be easy to find and fix it but you need very big skill.
JiILq2nic.png

(screen from few days, 1000 players online)



I would like to know as well. A re-coding of the entire server is nowhere near 500 euro I might do it for 1k Euros.

OR

You can use OTServ (Lastest revision) and switch your scripts over to their Lua style. You will find a better performance from OTServ.

I said over 500 euro. If you can optimize over then 25% i can pay over 1000 euro (it is still cheaper than new server with E3-1290v2)


http://otland.net/subversion.php?sv...h=/trunk/itemattributes.cpp&rev=5655&peg=5655
It's one of my lastest preformace. const char* is 5x faster then std::string in this function. I sent informations about that to elf and he fixed it (i sent him over 10 paths for tfs).
 
Last edited:
Then on server is over then 1300 players server is lagging.
You are stupid, why do you think RL Tibia server developed by profesionals programer have only 900MAX players ??


Subversion
It's one of my lastest preformace. const char* is 5x faster then std::string in this function. I sent informations about that to elf and he fixed it.
This is performance????
Pointer to Pointer??!!??!!??
Where the fuck you cee performance, tell me.
It's 5x faster in your dreams.


You want to change to better Procesor??
Change your brain.

You are looking for sourcecode performance. So you are talking shits.

If you want to make perfomance and take over 1000, 2000, or 10 000 without lag,s you have to make multi-machines server.
 
I am not stupid, but I think it isn't good for RL Tibia to have over 900-1000 players for one server so they have another servers.


It's good preformace. Function with const char* take 5x less time then with std::string. I tested it and it's true.

If you think that the processor is nothing try to run server with over 1000 people on intel dual core -.-
I checked it too and i7-2600 is 20-30% faster then Xeon 3450. I think E3-1290v2 will be faster then i7-2600 for 10-15%.

I belive source code can be much faster then now.

If you don't want help don't post here. I am looking for programmer, not for unreasoned critic. If you post here include tests and evidence that what you say is true.

Sorry for my english.
 
Last edited:
ech.

What I said it was Help for you.
Cuz you dreaminig.

It's good preformace. Function with const char* take 5x less time then with std::string. I tested it and it's true.
Elf made mistake naming that performance: (REV 5654 → REV 5655)
http://otland.net/subversion.php?svn=private&file=comp.php&repname=forgottenserver&compare[]=%2F@5654&compare[]=%2F@5655

So dont talk shits like you tested it, OK !!!??
Becouse you dont know how to test the CODE, and you talking about you dont know anythink.
For compilator it's the same like now and before.

I am not stupid, but I think it isn't good for RL Tibia to have over 900-1000 players for one server so they have another servers.
Hmmm,
let me think...
Maybe CipSoft it's NOT Blizzard (World of Warcraft)
Maybe multi real-time server is too advanced(too expensive, too little benefits)

You shoud close this thread, because you want something what is impossible.
 
Then on server is over then 1300 players server is lagging.
Here is part of logs.
Code:
Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls   s/call   s/call  name    
  8.20    450.41   450.41  4785414     0.00     0.00  Map::getPathMatching(Creature const*, std::list<Direction, std::allocator<Direction> >&, FrozenPathingConditionCall const&, FindPathParams const&)
  7.17    844.45   394.05 174440510     0.00     0.00  Map::getSpectatorsInternal(std::list<Creature*, std::allocator<Creature*> >&, Position const&, bool, int, int, int, int, int, int)
  5.05   1121.89   277.44 9881542274     0.00     0.00  boost::detail::shared_count::~shared_count()
  4.12   1348.42   226.53 4315796111     0.00     0.00  Creature::getPosition() const
  3.35   1532.81   184.39 73087006     0.00     0.00  Protocol::XTEA_encrypt(OutputMessage&)
  3.00   1697.89   165.08 223273186     0.00     0.00  OutputMessagePool::sendAll()
  2.50   1835.39   137.51 623541902     0.00     0.00  Map::canWalkTo(Creature const*, Position const&)
  1.82   1935.58   100.19 1639257429     0.00     0.00  ItemAttributes::getIntegerAttribute(char const*) const
  1.78   2033.55    97.97 1523266147     0.00     0.00  Map::getTile(int, int, int)
  1.50   2115.96    82.41 345998245     0.00     0.00  boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::cancel(boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::implementation_type&, boost::system::error_code&)
  1.33   2189.26    73.30 233179316     0.00     0.00  boost::asio::detail::epoll_reactor<false>::run(bool)
  1.26   2258.68    69.43 135341332     0.00     0.00  boost::detail::sp_counted_impl_p<std::list<Creature*, std::allocator<Creature*> > >::dispose()
  1.19   2323.92    65.24                             Scheduler::schedulerThread(void*)
  1.18   2388.79    64.87 164355595     0.00     0.00  boost::asio::detail::timer_queue<boost::asio::time_traits<boost::posix_time::ptime> >::timer<boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, void (*)(boost::weak_ptr<Connection>, boost::system::error_code const&), boost::_bi::list2<boost::_bi::value<boost::weak_ptr<Connection> >, boost::arg<1> (*)()> > > >::complete_handler(boost::asio::detail::timer_queue<boost::asio::time_traits<boost::posix_time::ptime> >::timer_base*, boost::system::error_code const&)
  1.00   2443.67    54.88 50049918     0.00     0.00  void std::__adjust_heap<__gnu_cxx::__normal_iterator<SchedulerTask**, std::vector<SchedulerTask*, std::allocator<SchedulerTask*> > >, long, SchedulerTask*, lessTask>(__gnu_cxx::__normal_iterator<SchedulerTask**, std::vector<SchedulerTask*, std::allocator<SchedulerTask*> > >, long, long, SchedulerTask*, lessTask)
  0.95   2496.02    52.36 170003978     0.00     0.00  void boost::asio::detail::epoll_reactor<false>::schedule_timer<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, void (*)(boost::weak_ptr<Connection>, boost::system::error_code const&), boost::_bi::list2<boost::_bi::value<boost::weak_ptr<Connection> >, boost::arg<1> (*)()> > > >(boost::asio::detail::timer_queue<boost::asio::time_traits<boost::posix_time::ptime> >&, boost::asio::time_traits<boost::posix_time::ptime>::time_type const&, boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, void (*)(boost::weak_ptr<Connection>, boost::system::error_code const&), boost::_bi::list2<boost::_bi::value<boost::weak_ptr<Connection> >, boost::arg<1> (*)()> > >, void*)
  0.94   2547.91    51.89 56023498     0.00     0.00  Game::checkCreatureWalk(unsigned int)
... and much more ...

If you can, try moving all the networking/xtea to not run on the game thread... OT/TFS was written without threading in mind so stuff might be harder to parallelize. In my spare time I'm working on a clean-room C# tibia server implementation with a different architecture that avoids some of these performance problems.. Good luck.
 
I know it's hard so i am looking for someone with better skill. I will move few functions to threads but it's hard (sendAll, XTEA_encrypt, all OutputMessagePool).
If someone would take this job please contact with me.
 
Last edited:
Back
Top