Jump to content

chuk

Developers
  • Posts

    3,784
  • Joined

  • Last visited

  • Days Won

    92

Everything posted by chuk

  1. Don't forget you can cast spells faster bare-handed or with fist weapons.
  2. Indeed, it should be mentioned on the registration page though.
  3. Good job Another couple of small things I noticed though : In the difficulties selection very hard is below ultimate probably alphabetical sorting Would be nice to be able to clear specific filters by pressing escape Do all items appear in the dropdown from drops? It seems less than the usual amount I deal with I also took a look at the code and looks easy to integrate with the current setup (the droptable gets generated automatically from the server files)
  4. chuk

    Hey there, sexy ;)

  5. Looks nice, though I would change some minor things like Making the episodes, difficulty, IDs a dropdown box. And put 100 results by default. Putting the search form at the top A button to clear all filters But yeah, I like it and I will implement it into the droptable when I get some time.
  6. Bad news for you, It is in C# I just like that language a lot =p
  7. It's been a while, anyone thinks this needs an update with some links?
  8. The difficulty curve for ultimate is steep at first, but once you gain a couple more levels and have some better gear it becomes a walk in the park. Just grind up a few levels and you will notice how quickly Ultimate becomes perfectly doable without the need of any top tier weapon.
  9. chuk

    Easter Event 2015

    Monsters drop these items. You're welcome for this extremely useful information provided by me.
  10. Broadband routers have a parameter known as MTU. This sometimes needs to be set to a minimum required value. The PSO BB setting has an MTU value of 1420. Please check your router's instruction manual for information on how to change your settings.
  11. First I will delete this TOPIC Then all his other posts Nah, it's not that bad actually ^^
  12. Godric (had been a while since he was mentioned in this topic)
  13. Bad habits? Too lazy to switch out gear for my alts, so I hunt(ed) every gear/weapon for each character instead of transfering them. Walking in multiplayer mode through the temple/ruins and getting stuck on a dual switch door. Feeding 8 mags while farming/hunting making me go back and forth between pioneer and the actual game a tad too many times. Forgetting to put a pipe up before entering a boss room Probably more, but I forgot
  14. Hey, first of all it's nice to see someone as enthusiastic about helping out with the development part of this old but lovely game. As you guessed it, the ultima source is indeed based on tethealla with quite a bunch of tweaks and fixes. We're absolutely aware that the code is far from perfect and could use some polishing up, or even be recreated from scratch with a more OO approach (working slowly on that in C# in my scarce spare free time, but that's another story). So, moving on to your points : The login server allocates memory up front for the maximum possible client connections. Each connection is about 2Mb. That is far too much for what it's used for. The majority doesn't need to be held onto. In main()'s socket loop, each client has its own set of data buffers which are populated and later processed. Memory usage could be cut down by reusing a single buffer for all clients: populate the buffer and process the data immediately, then who cares about holding onto that buffered data? Just move on to the next connection. The setup and the processing are pointlessly disconnected from one another and wasting all that memory. The only benefit I see from this approach, is that this allows for a smoother debug, and making sure that one buffer doesn't interfere with another client. The buffer should be completely thread-safe to guarantee that no garbage data is being passed on from one client to another. But it's indeed more common nowadays to see one buffer doing the work for all clients. The login server has 46 unique MySQL queries in its source file. The queries are all for the most part formatted by sprintf() and directly executed. This method sends the query string to the server, which has to parse it every time. Prepared statements could help improve this situation, at the expense of some of the MySQL server's memory. Prepared statements are parsed by the MySQL server a single time, data is bound to placeholders in the query, and only the data itself needs to be transferred. This would benefit queries that are executed many times. Drawbacks would be setting up the prepared statements in the server code and the fact that the MySQL server has to store the statement handle. I fully agree that prepared statements are a safer and more efficient approach, together with a strong filtering system on passing on the arguments to it. Another option would be more stored procedures, but the drawback of those is that they need to be implemented on the actual SQL server and that it would slightly compromise the flexibillity to be able to use a different db type in the future. (for example Postgresql). But since the syntax has its 5% difference between several SQL db's, I guess it's not as flexible now anyways. (PDO ftw). But yes, prepared statements have great benefits in regards to SQL injections or even coding errors. MySQL transactions might worth using for certain database actions (they are not used in the Tethealla source I'm looking at). These can make a series of data changes atomic. Performing multiple steps like "remove an item from the player's bank" followed by "place the item in the player's inventory" would be guaranteed to never perform one action without the other; either both happen or neither happen. The item is properly moved or safely stays in the bank. Despite how it sounds, this is the least important of these things I'm bringing up. I made a post on pioneer2.net with a new proposal for the database architecture where I also aim for a more granular approach in saving data to the database. This allows again for more flexibility for the programmer, less network overheat and overall a cleaner way to store data. Problem is, the client expects one big blob of data anyway, so we would have to parse and re-assemble the blob in the server on the fly. (Which is not really a problem actually lol) Numerous chunks of code are copied and pasted in multiple places throughout the source files. This is a nightmare to maintain. Better be sure that if you update one, you update all the other instances of the same function! Help keep earth.c clean and recycle. There's no excuse for slapping multiple copies of the same code everywhere and pointlessly bulking up the source files. Also, there are many massive functions that should be broken down into several smaller functions. Hence I'm trying to remake it with an OO approach, so much easier to expand and maintain. But it takes time to work on it, time I don't really have with my fulltime job... Would be great to get help on this. If you're interested I could throw it in a GIT repository so we could work together on it. Was planning to make it opensource anyways, but it's still in a very early stage, so don't expect anything functional soon. Existing libraries could be used to cut down on the server's code. Two prime choices for removal are the MD5 and the Mersenne Twister implementations. MD5 can be done for a Windows platform through the Cryptography API or for linux through libgcrypt. The Mersenne Twister is available from <random> in C++11. Both the crypto and the twister libraries are available in Visual Studio 2012. Yeah, some libraries are outdated/obsolete with nowadays technology. Dusting those off would be a good idea. If using C++, the MySQL C++ connector library could be used in place of the C API. This would greatly simplify the MySQL interface, especially for prepared statements. I will always be pushing for C++ here. The STL would be hella sweet to be using: easier to manage containers of objects like the client connections, easier to parse the configuration files, easier to break peoples' spirit by using templates, etc. C++, awwwyissss. As a side note, fuzziqer's newserv is in "C++" but makes absolutely no use of anything C++ that I could see when browsing through that project. Kind of depressing. Personally I don't like C/C++ all that much, I would have chosen any other OO language over those. I know OO can be done with C++ but still, jsut not my cup of tea. Aside from the Tethealla source, I've been thinking about the PSO control panel, which can easily be done from the database viewpoint. Honestly, the only hard part would be the user interface. Exactly as chuk stated in that original thread about the panel, knowing if an account is online is the single most important part of this. And to be a complete jerk about it, I will tell you right now that I am keeping the specifics to myself to attempt to gain leverage for myself. When working on the mana client, I found a way to check if a player is online or not. Even better, it shows a list of all online players with some basic information. Just hasn't been a priority to fix the CPanel for now. I also began looking into the client's disassembly but am not yet in a position to report anything since I just started looking at a few functions of interest. So yeah, the whole point of this nonsense is to get the admins' attention and let them know I do mean business. If you say no to me, I will stop whining about wanting to do development stuff and just chill. I will be quite disappointed if I only get silence from the admins here, like at how it seems to be at pioneer2. If you say yes, I will try my best. On the contrary, you bring up some valid points that most of us already talked about but never really got motivated to fix. Ofcourse we won't just give you access to the server code rightaway, but if you can make a solid proof of concept with the tethalla source, we'd be glad to add fixes to our source. And if it all goes smooth, over time you might be able to work your way into the ultima developer ranks PS: I'd like to go deeper over some subjects, but I'm at work now, so can't really spend too much time on this now.
  15. It's because the host moved temporarily due to the recent DDoS attacks.
  16. Welcome to ultima, always nice to see the enthousiasm of (new) players ^^
  17. look in your chat logs in the PSOBB installation folder.
  18. The daylight sccar and black ring, no problem. The 36 Pds, that could be an issue
×
×
  • Create New...