SlideShare a Scribd company logo
===================================
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

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)
err
 
PowerShell - Be A Cool Blue Kid
PowerShell - Be A Cool Blue KidPowerShell - Be A Cool Blue Kid
PowerShell - Be A Cool Blue Kid
Matthew Johnson
 
Ysi readme
Ysi readmeYsi readme
Ysi readme
Stenli Siderov
 
Php mysql-tutorial-en
Php mysql-tutorial-enPhp mysql-tutorial-en
Php mysql-tutorial-en
soft deal solution
 
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
Timothy Sutton
 
Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009
marcelesser
 
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
 
50 Ways To Love Your Project
50 Ways To Love Your Project50 Ways To Love Your Project
50 Ways To Love Your Project
PostgreSQL Experts, Inc.
 
Lightweight Virtualization: LXC containers & AUFS
Lightweight Virtualization: LXC containers & AUFSLightweight Virtualization: LXC containers & AUFS
Lightweight Virtualization: LXC containers & AUFS
Jérôme Petazzoni
 
Scale11x lxc talk
Scale11x lxc talkScale11x lxc talk
Scale11x lxc talk
dotCloud
 
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...
Andrey Karpov
 
A basic unix overview(2)
A basic unix overview(2)A basic unix overview(2)
A basic unix overview(2)
Vishal Gurujuwada
 
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
 
Purdue CS354 Operating Systems 2008
Purdue CS354 Operating Systems 2008Purdue CS354 Operating Systems 2008
Purdue CS354 Operating Systems 2008
guestd9065
 
HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19
btopro
 
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
Rob Fuller
 
Php simple
Php simplePhp simple
Php simple
PrinceGuru MS
 
Intro to advanced web development
Intro to advanced web developmentIntro to advanced web development
Intro to advanced web development
Stevie T
 

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

How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
Edge AI and Vision Alliance
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
Pablo Gómez Abajo
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
saastr
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 

Recently uploaded (20)

How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 

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.