Yucon Framework || Optimization, organization, and high-level security

:warning: Notice (as of 2023)

This framework is not good, and if anything, harmful. I’ve learned over time how to properly have optimization, organization, and high-level security without the need for general-purpose frameworks. That being said, Yucon is more memory-hungry and buggy than other frameworks, and thus should not be used.

My number one tip is to not use general-purpose frameworks since it creates unnecessary memory buildup and prevents proper typechecking/autofill on many things. Instead, use smaller frameworks that handle specific problems, such as a UI framework for UI (e.g. Fusion/Roact), remote framework for remotes, load behavior framework, etc.

Original Post

What is Yucon?

Yucon is a programming framework that replaces Roblox-default scripts with a new modular-based approach; this ensures all code has common API that can be used to communicate, organize, and overall make your life easier.

While Roblox locks a user to strictly local- and server-sided scripts, Yucon allows an additional “shared” state, which runs the same code on both the server and client. Additionally, an object-oriented approach to the code allows a developer to create object classes, code plugins, and more! Use a simple and intuitive UI to navigate code and create new objects in the framework with ease.

Information and Download

There is a GitHub page for Yucon, which includes basic instructions and API. It is a work-in-progress updated in free time.

GO TO THIS GITHUB PAGE FOR COMPLETE INFORMATION!

YuconFramework

Download the plugin for Roblox Studio as well!
https://www.roblox.com/library/5196221650/Yucon-Framework

What exactly does it do?

Yucon Framework runs your entire experience, including all scripts, plugins, and object classes on one server script and one client script.

In the Yucon Editor, users can create scripts, plugins, and classes. You can make these run on the client, server, or even both at the same time!

yucon

The UI acts to keep everything organized in sections so that you don’t spend ages searching for your work.

Scripts run like typical Roblox scripts, except these are built-in with Yucon API using the self keyword, as well as Preload, Start, Step, and Render events. These are different stages in the script’s life that signify certain events (Preload runs before Start, Render runs every frame, etc).

Classes are the gateway to object-oriented programming, and are arguably the most important aspect of the framework. Classes allow you to create custom instances, which keep your data private in the memory to make exploiting on the client much harder. Classes allow for more flexible coding! These can be created by doing self:NewInstance()

The combination of three instance types help keep your code optimized and secure.

Who is it for?

Yucon is for anybody! Whether you are a beginner or advanced programmer, you can definitely get started with this at any time.

Is it used?

Yes! I use it in every single one of my projects; I created the framework because it truly serves purpose to my workflow, and I think it can benefit you as well.

Here are some YouTube videos of games that use the framework:

https://www.youtube.com/watch?v=6E_OyKAx0tQ

https://www.youtube.com/watch?v=C2j6YX0MugY

https://www.youtube.com/watch?v=anGSW_iEBJ8

Connect

Want to use this framework but need to help from somebody else? Or, do you want to showcase what you made? Feel free to join my Discord server!

iGottic's Server

Feedback

I would love to get as much feedback as possible! The more feedback the better, because it just makes the framework more accessible!

Make sure to let me know of anything that could be improved, patched, or added!

Thanks for reading :heart:

152 Likes

Does anybody have any projects they’ve created with the framework? If so, I would love to see :slight_smile:

12 Likes

Updates:

  • Fixes regarding random Yields and Errors in the output during playtest
  • Many optimizations by using LuaU syntax on variables.
  • Small changes
3 Likes

I recently used this for one of my projects! :smiley:

5 Likes

Looks pretty cool, but one thing I don’t like is the discrepancies between the code styles. Some functions use completely different code styles than others. The base functions are in the pascal case style. The CodePlus module is a mix between camel case and snake case. And the other modules are also varying. You should uniform the code style.

4 Likes

I think it would help alot if you provide code example for the functions on the documentation. I feel like theres something missing from the documentation, principally on the client / server communication. Other than that it’s a neat framework!

2 Likes

I will definitely have to fix this. Thanks!

1 Like

I may provide a tutorial soon :slight_smile:

1 Like

Updates (under testing, will apply in the next day or two):

  • Plugins now have access to remotes
  • Plugins cannot cross-reference each other anymore.
  • Minor optimization

In addition, I have released a small demo that uses Yucon: SCP Launcher - Roblox

1 Like

Can you release the source code for the Yucon demo? I thought this would be an example of how to use it.

1 Like

Sure :wink:
You should find that it’s open-source now.

1 Like

I would just like to ask why you think spawn brings down the leftover memory for other scripts, and would like to ask what you would use instead.

spawn runs on a separate thread priority in the Lua enviroment. Yucon takes advantage of coroutine to deliver a more reliable experience.

2 Likes

But that still doesn’t answer the question of why you think it brings down the left over memory, is there any evidence to support this claim?

After doing some research, I can’t actually find the specifics. It’s likely I confused spawn with some other method.

The topic will be edited to change that information :slight_smile:

However, spawn is a bad practice, and I recommend using coroutine for many cases.

2 Likes

It’s been quite a bit since the last update! Don’t worry, I got your back!

  • Removed LuaU’s => symbol, and replaced it with :. Sorry if your framework broke in the meantime, it is now fixed!
  • Optimized the code a bit more.
  • Included type array and type dictionary in all default plugins and scripts.
  • Fixed method names; they are all now PascalCase, rather than some that and some camelCase. Thanks to @Dysche for the idea.
1 Like

Very interesting way to organize Server-side scripts and local scripts to execute module scripts. Moreover, the GUI for the plugin is easy to use. I’ll be using it in my inverse kinematics project and I’ll make sure to credit you when I publish a working version of my project with the plugin in the main branch of my GitHub.

Edit:
I have encountered some things which may make newer users have difficulties with the framework at the beginning which I summarized below:

TL;DR

  • Example use cases for Preload and Start (Step is self-explanatory and self testable)

  • Errors in step don’t output onto the command bar

  • The SCP launcher example is bugged and shows a black screen

1 Like

I’ll work on it. Thanks for the feedback!

2 Likes

nice framework i tried it and it worked well the only thing that i was expecting is your own framework datastore module like aero till then ill just wait for it

my recommended is that:

access modules with self.FOLDER_NAME.MODULE_NAME like something from aero
a good module datastore
make the gui better

Thanks!

Sure thing! Expect that soon, and thanks for that feedback.

I’ll keep the self:GetPlugin() system, but I may do a hierarchy system. Do you have more information on this that you think would fit Yucon?

I was thinking the same thing! In your opinion, what does the GUI lack the most?

Thanks for your feedback, I will be sure to work on it as soon as possible.