optimuspi / sko Goto Github PK
View Code? Open in Web Editor NEWStick Knights Online - 2D Side-Scroller Stickman Online Role Playing Game
License: GNU General Public License v3.0
Stick Knights Online - 2D Side-Scroller Stickman Online Role Playing Game
License: GNU General Public License v3.0
While the user is typing, if he or she types 'r', the character throws the trophy. This should only happen when not typing.
Using multiple items in the mentioned areas becomes cumbersome with amounts such as 999, for example.
To deposit 999 items, a user would have to:
-Click Deposit 100 items 9 times
-Click Deposit 10 items 9 times
-Click Deposit 1 items 9 times
Enhancement is to allow user to click either a value higher than the amount desired to deposit (1000, 10k, 100k, etc.) and have the items deposited. The user could also click 'X' deposit selector and type in 999 for example.
Also...
It would be really nice to Shift+Click to deposit all of the selected item into the bank, as well as trading and shops.
Fix the mess that is "Button::" and make it proper. New classes to define buttons and invoke them.
When dragging from inventory empty square, the picture of a gold coin is shown on the mouse.
When emptying all of a certain item, and then dragging from the box the item was in, the item is still shown on the cursor.
The fix is to create getHatUnarmedAttackOffsetX() to supplement getHatAttackOffsetX()
In the code, the sound is played and then muted if sound is disabled in the options file.
Sometimes, the user can hear the music play for a split second before it is muted.
The desire is to not have any sound play if it is disabled.
Some users may not use qwerty (one popular player uses dvorak)
It would be great to allow the user to set their own controls. Save these settings in a user profile file.
Controls such as WASD for movement, Ctrl and Alt for attack, F1, F2, F3, etc. for some UI toggles.
When switching maps, the client could handle it more elegantly.
There is a "flash" where nothing displays except the background and clouds.
This is likely because the X and Y of the player is unknown until it finishes loading.
We have discussed multiple times before the possibility that I try and help withdevelopment of SKO in any way I can. With no real familiarity with how the project is structured, I figure starting out with some documentation will be a good first step.
Hopefully, helping to write some documentation will allow me to familiarise myself with the code structure as well as make it more accessible to anybody else who would like to contribute.
Before getting started in too much detail, or committing any changes to the codebase, I would like to propose some changes in order to make collaboration and organization as easy as possible.
Please do comment with any disagreements or thoughts you might have. :)
I would like to propose implementing a documentation generator in order to force documentation to be consistent across the project and to allow easily publishing in HTML etc.
For example: http://www.stack.nl/~dimitri/doxygen/
Agreeing on certain styling conventions to follow will help to make collaboration easier, providing consistency and ensuring an effort is made to keep the project well structured and maintained.
Perhaps [https://google.github.io/styleguide/cppguide.html](Google's C++ Style Guide)
I do not necessarily mean religiously following every single little rule, more so agreeing on things like indentation strategies etc.
Two space indentations with no tabs :D. Editor configured to input spaces in place of tabs, that kinda thing.
I would also like to propose reorganising the project folder structure slightly. Something like this:-
Directory | Contains |
---|---|
./ | Makefiles, readme's, git files |
lib/ | Project sources prividing an interface/api, OPI_Image, SKO_Shop etc |
src/ | Project source files |
bin/ | Any binaries, sko.exe, DLL's, that kinda thing |
configs/ | Configuration files, ini's, maps |
thirdparty/ | Third part sources, for example the INI parsers |
SKO_Client
├───bin
├───client_resources
│ ├───image
│ │ ├───GUI
│ │ └───TILE
│ └───sound
├───config
│ ├───data
│ └───maps
├───lib
├───src
└───thirdparty
Resolve all compiler warnings, else as many as possible.
Investigate/implement SLD_ttf for true type fonts, get rid of custom font and text rendering.
Unsuccessful login attempts freeze the game and do not display help text. The client is waiting indefinitely for a successful attempt to go through instead of displaying the error help text.
When talking to the clan NPC, you can not capitalize any letters. Using shift with a letter acts as a backspace and deletes the last character/space.
Upgrading again to SDL2 libraries.
Need to add documentation so it's easier for people to compile.
Take advantage of the .INI parser and convert this binary save file to .INI format.
This will be easier to read and also easier to edit manually by the user.
Options.dat is used for master mute, music mute, and sound effects mute. It should be expanded to include more options, perhaps.
Need to adjust animation positions for trophies while attacking, especially when unarmed.
The user can no longer click on or read signs when:
Possibly more, will add as I find them.
Instead of calling the input handler from different areas of the code, make a thread that always checks. Not sure how fast to check, but could get by with between 100 to <=1000 times per second.
There should be at least 1 millisecond sleep. Checking returns nearly instantly if there was no input. Change if statement to while loop so it runs "faster" if there is more input to process.
This is important for blocking functions such as reconnect with 10 second timeout: that's 10 seconds of input blocking that prevents the user from closing the client. That is not acceptable.
Make input handle checking its own thread and be done with it. :)
Small adjustments to the map2.ini file.
There is an OS-specific directive to tell the compiler which chunks of code to use.
This is a nasty hack because I don't know why it works or how exactly to fix it, although it shouldn't be too hard and probably will speed up the game performance anyway.
Look for the string: [#if MY_OS]
Examples:
main.cpp:7869
void physics()
{
# if MY_OS == LINUX_OS
HandleUI();
# endif
main.cpp:7744
while (timestep->Check())
{
#if MY_OS == WINDOWS_OS
HandleUI();
#endif
#if MY_OS == MAC_OS
HandleUI();
#endif
Some day, need to change to a different networking library that has ipv6 support.
When throwing some of my 54K snowball trophies, the inventory shows 54K.
When picking one trophy up, the value goes to about 114K. When picking another up, the value goes to 11M.
When throwing a trophy that falsely displays as 11M, etc, the value corrects back to 54K indicating the server value is correct and the client is reading the pick-up value wrong.
Refactoring of the networking methods and logic in to a dedicated class.
Include methods for building and sending packets (removing those packet codes from the global namespace!), and handling any network events.
There is current functionality to open signs by clicking them, and close the dialog box by clicking the 'x' in the corner.
Keep this functionality, but make it so signs automatically open when you touch them, and close when you walk away from them. Perhaps tie into the collision detection, follow code such as Target collision detection.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.