SlideShare a Scribd company logo
1 of 3
===================================
YSI Server Includes (YSI) Roadmap
===================================
This is just a brief introduction to where I would like YSI to go, some parts
are more urgent than others, but some of these parts have been on the cards for
a long time because they're outside my area of expertise. The tasks have been
split in to three groups:
- Library Development,
- Mode Development (including mini-mode development),
- Web Development.
=====================
Library Development
=====================
This has often been the sole preserve of myself, but that is because few other
people have as much knowledge of the internals of YSI as I do, which does make
it hard for others to develop libraries for YSI. I have attempted to document
some of the processes, but it is still a skilled art (though for my own sake I
have gone to great lengths to simplify the code). However if people are willing
to assist in this area I am VERY willing to offer help and support whenever
possible. My time for coding is very limited at the moment, however I am always
on IRC and if people wish to chat about things I'm sure I can spend a few
minutes helping them out. There are a number of libraries already in
development, and more in the pipeline or requiring attention:
- Require attention:
- y_ini - When the first version of this was released it was VASTLY faster
than any other system available because it used a vastly different read system
to the others. I still maintain that it is a good system, however people seem
intent on using dini style function calls so a dual system would seem to be the
best bet. In that regard I have an idea for a cache system which is a direct
replacement for dini:
[pawn]
LoadFunc(file)
{
gSomeVar = dini_Int(file, "value"); // Open and cache the file here.
gSomeFloat = dini_Float(file, "float"); // Detect that this is the
same file as last used and so use cached data
} // Detect the end of the function and close the cached file to free up
memory. This is documented in Slice's tricks tutorial.
[/pawn]
- y_stringhash - If ANYONE can solve the commas issue I will be eternally
grateful! I'm not convinced it's possible but I'd like to move from:
[pawn]_H(H,e,l,l,o)[/pawn]
To:
[pawn]_H(Hello)[/pawn]
The closest I came was using symbol truncation at 31 characters:
[pawn]#include <a_samp>
#define _A_LONG_SYMBOL_ENDING_WITH_AN_A%0>
"A"_A_LONG_SYMBOL_ENDING_WITH_AN_%0
#define _A_LONG_SYMBOL_ENDING_WITH_AN_B%0>
"A"_A_LONG_SYMBOL_ENDING_WITH_AN_%0
#define _A_LONG_SYMBOL_ENDING_WITH_AN_C%0>
"A"_A_LONG_SYMBOL_ENDING_WITH_AN_%0
#define _H(%0) _A_LONG_SYMBOL_ENDING_WITH_AN_%0>
main()
{
print(_H(ABC));
}
[/pawn]
That gives an error which lists, but doesn't find
"_A_LONG_SYMBOL_ENDING_WITH_AN_A". I tried forcing a reparse with a tagged
function but that didn't work. As I said, I doubt this is possible, so don't
worry too much about it.
- y_iterate - There's an error message "Something went wrong, please tell
Y_Less". I've had a few people report it but I don't know why it happens, only
that it sometimes does. I can't rule out the possibility that they're not using
it right.
- y_classes - Still needs some work to make usage smooth.
- In development:
- y_text - This is probably the most urgent of the unwritten libraries,
and I may have to just sit down and write it. This is responsible for loading
text from files and displaying it to players in their native languages. This is
the most urgent as most of the other unwritten libraries will need to use it to
display data.
- y_colours - A major update to my coloured chat text library unifying all
the text formats, so you can do:
[code]"Hello~r~ there,{00FF00} how are#BLUE you[/code]
Plus some other fancy bits (fades and end colours). I've already written
the code for displaying that text correctly using SendClientMessage, but the
other formats need doing. Again this is more a case of me sitting down and
knocking out the code (now that I've figured out how to get past a block I was
having).
- y_minimode - y_minimode is a plan for a major minimode wrapper.
Minimodes will be written as entirely separate scripts and compiled to the
server/minimodes folder (which CAN be loaded from using loadfs). The callbacks
in the modes will be new, for example "OnMiniModeInit", "OnPlayerJoin",
"OnMiniModeStart", plus all the other in-play callbacks ("OnPlayerDeath" etc)
and YSI callbacks ("OnPlayerLogin", which will be called automatically for
people logged in before they join the mode). This will provide a subset of all
available functions and callbacks so you can write modes essentially in a
sandbox - calling things like "CreatePlayerCheckpoint" will automatically call
the streamed version underneath (where applicable) for example, and all
resources will be cleaned up after. Any settings the player had before joining
the mode will be automatically restored. This will involve two includes being
written - y_minimode and a_minimode, the former being the code included by the
main gamemode to allow people to join and start modes, the latter being the
include used to write minimodes. More information available on request. Note
that although this is listed under "In development", it really isn't very far.
- Planned:
I have plans for libraries for basically anything you can think of. Jobs,
properties (YSI 0.1 has one already, but it's intertwined with the CP streamer
which has been dropped in favour of plugins), items, anything else anyone can
think of. This is probably the easiest job for a person new to YSI development
to do because there's very little dependency on other libraries or code to
learn.
- y_mouse - Ages ago I wrote a topic on how to use the mouse from the
SA:MP server, this needs wrapping up and making smoother. Most of the problem
with this is finding a way to force fast updates (as you get when in aim mode -
possibly by setting a player's animation).
- y_menu - Define menu systems generically.
- y_gui - Read basic bitmap files and convert the apperance to a set of
textdraws to draw GUIs on a person's screen. This would ideally be combined
with y_mouse to make a whole new set of input options (think inventories in
other games).
- y_player - A user system with interchangable backends (SQLite, MySQL,
INI, XML etc) with dynamic code so that you don't need to define your databases
in advance (Slice has also demonstrated this in the past). Again this was in
the old YSI but hasn't yet been ported (mostly due to the lack of y_text).
==================
Mode Development
==================
Basically YSI has always suffered from a lack of modes which demonstrate it's
use. This would just be developing small or large modes which use YSI well (and
are prefereably well documented, but I know that can be hard).
=================
Web Development
=================
I'd like tighter integration between PHP and PAWN, this would involve the
development of a decent communication between the two and a PHP API for server
communication and control (as much as possible). I have ideas on how a generic
PHP and PAWN comm system can be written so most YSI functions can be called
without too much development effort.

More Related Content

Similar to Roadmap

Designing A Project Using Java Programming
Designing A Project Using Java ProgrammingDesigning A Project Using Java Programming
Designing A Project Using Java Programming
Katy Allen
 
Scale11x lxc talk
Scale11x lxc talkScale11x lxc talk
Scale11x lxc talk
dotCloud
 
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
camp_drupal_ua
 
LXC Containers and AUFs
LXC Containers and AUFsLXC Containers and AUFs
LXC Containers and AUFs
Docker, Inc.
 
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytesWindows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Peter Hlavaty
 

Similar to Roadmap (20)

Kickin' Ass with Cache-Fu (with notes)
Kickin' Ass with Cache-Fu (with notes)Kickin' Ass with Cache-Fu (with notes)
Kickin' Ass with Cache-Fu (with notes)
 
PowerShell - Be A Cool Blue Kid
PowerShell - Be A Cool Blue KidPowerShell - Be A Cool Blue Kid
PowerShell - Be A Cool Blue Kid
 
Ysi readme
Ysi readmeYsi readme
Ysi readme
 
Php mysql-tutorial-en
Php mysql-tutorial-enPhp mysql-tutorial-en
Php mysql-tutorial-en
 
Tools and Process for Streamlining Mac Deployment
Tools and Process for Streamlining Mac DeploymentTools and Process for Streamlining Mac Deployment
Tools and Process for Streamlining Mac Deployment
 
Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009
 
Designing A Project Using Java Programming
Designing A Project Using Java ProgrammingDesigning A Project Using Java Programming
Designing A Project Using Java Programming
 
50 Ways To Love Your Project
50 Ways To Love Your Project50 Ways To Love Your Project
50 Ways To Love Your Project
 
Lightweight Virtualization: LXC containers & AUFS
Lightweight Virtualization: LXC containers & AUFSLightweight Virtualization: LXC containers & AUFS
Lightweight Virtualization: LXC containers & AUFS
 
Scale11x lxc talk
Scale11x lxc talkScale11x lxc talk
Scale11x lxc talk
 
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
 
A basic unix overview(2)
A basic unix overview(2)A basic unix overview(2)
A basic unix overview(2)
 
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
 
LXC Containers and AUFs
LXC Containers and AUFsLXC Containers and AUFs
LXC Containers and AUFs
 
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytesWindows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
 
Purdue CS354 Operating Systems 2008
Purdue CS354 Operating Systems 2008Purdue CS354 Operating Systems 2008
Purdue CS354 Operating Systems 2008
 
HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19
 
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
The Dirty Little Secrets They Didn’t Teach You In Pentesting ClassThe Dirty Little Secrets They Didn’t Teach You In Pentesting Class
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
 
Php simple
Php simplePhp simple
Php simple
 
Intro to advanced web development
Intro to advanced web developmentIntro to advanced web development
Intro to advanced web development
 

Recently uploaded

Recently uploaded (20)

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Roadmap

  • 1. =================================== YSI Server Includes (YSI) Roadmap =================================== This is just a brief introduction to where I would like YSI to go, some parts are more urgent than others, but some of these parts have been on the cards for a long time because they're outside my area of expertise. The tasks have been split in to three groups: - Library Development, - Mode Development (including mini-mode development), - Web Development. ===================== Library Development ===================== This has often been the sole preserve of myself, but that is because few other people have as much knowledge of the internals of YSI as I do, which does make it hard for others to develop libraries for YSI. I have attempted to document some of the processes, but it is still a skilled art (though for my own sake I have gone to great lengths to simplify the code). However if people are willing to assist in this area I am VERY willing to offer help and support whenever possible. My time for coding is very limited at the moment, however I am always on IRC and if people wish to chat about things I'm sure I can spend a few minutes helping them out. There are a number of libraries already in development, and more in the pipeline or requiring attention: - Require attention: - y_ini - When the first version of this was released it was VASTLY faster than any other system available because it used a vastly different read system to the others. I still maintain that it is a good system, however people seem intent on using dini style function calls so a dual system would seem to be the best bet. In that regard I have an idea for a cache system which is a direct replacement for dini: [pawn] LoadFunc(file) { gSomeVar = dini_Int(file, "value"); // Open and cache the file here. gSomeFloat = dini_Float(file, "float"); // Detect that this is the same file as last used and so use cached data } // Detect the end of the function and close the cached file to free up memory. This is documented in Slice's tricks tutorial. [/pawn] - y_stringhash - If ANYONE can solve the commas issue I will be eternally grateful! I'm not convinced it's possible but I'd like to move from: [pawn]_H(H,e,l,l,o)[/pawn] To: [pawn]_H(Hello)[/pawn] The closest I came was using symbol truncation at 31 characters: [pawn]#include <a_samp> #define _A_LONG_SYMBOL_ENDING_WITH_AN_A%0> "A"_A_LONG_SYMBOL_ENDING_WITH_AN_%0 #define _A_LONG_SYMBOL_ENDING_WITH_AN_B%0> "A"_A_LONG_SYMBOL_ENDING_WITH_AN_%0 #define _A_LONG_SYMBOL_ENDING_WITH_AN_C%0>
  • 2. "A"_A_LONG_SYMBOL_ENDING_WITH_AN_%0 #define _H(%0) _A_LONG_SYMBOL_ENDING_WITH_AN_%0> main() { print(_H(ABC)); } [/pawn] That gives an error which lists, but doesn't find "_A_LONG_SYMBOL_ENDING_WITH_AN_A". I tried forcing a reparse with a tagged function but that didn't work. As I said, I doubt this is possible, so don't worry too much about it. - y_iterate - There's an error message "Something went wrong, please tell Y_Less". I've had a few people report it but I don't know why it happens, only that it sometimes does. I can't rule out the possibility that they're not using it right. - y_classes - Still needs some work to make usage smooth. - In development: - y_text - This is probably the most urgent of the unwritten libraries, and I may have to just sit down and write it. This is responsible for loading text from files and displaying it to players in their native languages. This is the most urgent as most of the other unwritten libraries will need to use it to display data. - y_colours - A major update to my coloured chat text library unifying all the text formats, so you can do: [code]"Hello~r~ there,{00FF00} how are#BLUE you[/code] Plus some other fancy bits (fades and end colours). I've already written the code for displaying that text correctly using SendClientMessage, but the other formats need doing. Again this is more a case of me sitting down and knocking out the code (now that I've figured out how to get past a block I was having). - y_minimode - y_minimode is a plan for a major minimode wrapper. Minimodes will be written as entirely separate scripts and compiled to the server/minimodes folder (which CAN be loaded from using loadfs). The callbacks in the modes will be new, for example "OnMiniModeInit", "OnPlayerJoin", "OnMiniModeStart", plus all the other in-play callbacks ("OnPlayerDeath" etc) and YSI callbacks ("OnPlayerLogin", which will be called automatically for people logged in before they join the mode). This will provide a subset of all available functions and callbacks so you can write modes essentially in a sandbox - calling things like "CreatePlayerCheckpoint" will automatically call the streamed version underneath (where applicable) for example, and all resources will be cleaned up after. Any settings the player had before joining the mode will be automatically restored. This will involve two includes being written - y_minimode and a_minimode, the former being the code included by the main gamemode to allow people to join and start modes, the latter being the include used to write minimodes. More information available on request. Note that although this is listed under "In development", it really isn't very far. - Planned: I have plans for libraries for basically anything you can think of. Jobs, properties (YSI 0.1 has one already, but it's intertwined with the CP streamer which has been dropped in favour of plugins), items, anything else anyone can think of. This is probably the easiest job for a person new to YSI development to do because there's very little dependency on other libraries or code to learn.
  • 3. - y_mouse - Ages ago I wrote a topic on how to use the mouse from the SA:MP server, this needs wrapping up and making smoother. Most of the problem with this is finding a way to force fast updates (as you get when in aim mode - possibly by setting a player's animation). - y_menu - Define menu systems generically. - y_gui - Read basic bitmap files and convert the apperance to a set of textdraws to draw GUIs on a person's screen. This would ideally be combined with y_mouse to make a whole new set of input options (think inventories in other games). - y_player - A user system with interchangable backends (SQLite, MySQL, INI, XML etc) with dynamic code so that you don't need to define your databases in advance (Slice has also demonstrated this in the past). Again this was in the old YSI but hasn't yet been ported (mostly due to the lack of y_text). ================== Mode Development ================== Basically YSI has always suffered from a lack of modes which demonstrate it's use. This would just be developing small or large modes which use YSI well (and are prefereably well documented, but I know that can be hard). ================= Web Development ================= I'd like tighter integration between PHP and PAWN, this would involve the development of a decent communication between the two and a PHP API for server communication and control (as much as possible). I have ideas on how a generic PHP and PAWN comm system can be written so most YSI functions can be called without too much development effort.