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

I was wondering about the best way I could solve this most efficiently.

Got it :+1:

Thank you for sharing your code. I appreciate it.

Heartbeat connections refresh every frame, so if you queued functions, and some of them yielded too long, well then things would error as the remaining functions never gets to run. Your solution is to make coroutines for EACH function, and to be honest, that’s not a bad solution, however, heart connections already provide you with a separate pseudo thread which makes your implementation just a code smell, so what we must do is making all code that ends with :Step to get wrapped in a new heartbeat connection.

Interesting. I’ll experiment with it to see what gives me the most performant result.

Why should people use this framework over something like Aero, Dragon, or Knit? What would you say to someone that claims the framework is overcomplicated?

I have not quite worked with Dragon or Knit, so I wouldn’t be very familiar with those two. I can compare this to AeroGame Framework, though.

I know that every framework has it’s own focus. For example, Aero has an amazing system to focus on script communication. It has a powerful API to do it the most efficient way possible.

Yucon, on the other hand, is focused on optimization. This is partially because of the backend API, partially because of the way you have it set up as a consumer (using thread handlers, practically avoiding while, etc.). Now, of course, Yucon does need some fine tuning, as mentioned by previous users, but for the most part, it works pretty well.

In addition, this framework does get plenty of updates, as I do use it in my own projects.

Hopefully that clears this up a bit :slight_smile:

Issues with Yucon Framework were made aware of by @Ukendio
More issues noted by him/her will be worked on soon!

Updates, as of 10/17/20:

  • Fixed excessive type-checking
  • Fixed unchecked and unhandled coroutines
  • Fixed issues with embedded modules not being in the correct juxtaposition
  • Fixed a variety of game-breaking issues with remotes
  • You can now update the framework at any time by pressing the “import framework” button, you no longer get a “framework already installed” error
  • Debug tracebacking for Step, Render, and Start.
1 Like

This is really neat, I think I really like this and might use it for future projects. It seems like it sort of mimics a MonoBehavior from Unity in the sense that it’s got a function that runs at preload, start, and every frame. Glad to see you make such a fantastic plugin and I think a LOT of people will benefit from this!

1 Like

I’ll have to take a look at that, many people keep bringing up the similarity (the code is actually supposed to feel like Love2D) :stuck_out_tongue:

Does this framework capture that entirely, or is it missing features from it?

Well I lack the experience of completing a Unity game from start to finish, but from the looks of things you’ve got all the functions in the MonoBehavior. You use a RenderStepped, which is the same as the Mono Update() method and there is preload and start which basically act like the Mono start() function but with more control over execution order. I think one of the things that is missing is the Monobehavior’s LateUpdate() function which basically binds to renderstepped but lets other bindings go first, so you can choose to have it be the last thing that runs on each frame. Another thing is the onEnable() and onDisable() functions that run when the script gets disabled or destroyed and enabled or instantiated.

If you’re really interested I recommend you check out the actual documentation here:

A differentiating factor between the two is that in the Mono none of the functions are mandatory, even tho the script loads up with an update() and a start() function already defined, so you’ll never need to have an empty function in your code.

Hope this helps!

1 Like

Here is a bit of suggestion

1. Documentation of the full framework
Here are some suggestion in the framework

  • First is the, Client-Server Communication and how to make Events and Remotes
  • Second is, how to actually make code with it
  • Reuse old code in the new game
  • Finally, it should probably look like from Aero’s Framework API but since it’s different you write your own API for your own Framework

2. Rojo and Visual Studio Coding
Like from Aero you can code it from Visual Studio can this be a feature considered

Benefits and Negatives

Benefits:

  • No Clutter like the Windows, Tabs Etc.
  • Instant Check for Errors, Bugs etc.

PS: Those benefits may not be correct but it’s still worth it to add

Negatives:

PS: Likewise the Benefits it may not be true or not really a benefit or a negative

  • 250k character limit
  • It takes time to set-up like 2 Minutes is already long for set-up

Quotation

actually if this will actually work I did this and I got an Error in exchange for that same with the quotes below!

not actually can be done with self instead of script instead

In server-sided we use the arguments and parameters found in the below

player, ...

What’s the name parameter for “player”?

Can you specify on how to do this like the same with RemoteFunctions

Firing on the Server or Client doesn’t need the player argument same with the RemoteFunction

It would be nice to have a OrderedGlobalDataStore Function in which we can make our own leaderboards with this framework


Lastly, Of about the Plugins
What are they used for and why are they here?

Other then that Good Framework and Keep it Up!

I will for sure do something like this soon :slight_smile:

I considered it, but, that adds another layer of complication. I would prefer to keep in Studio to prevent that, hope you can understand.

Not sure why you are getting an error, can you send some code to show what you mean?
Because this is the base thing, and is in EVERY Yucon script, and I use it in all of my newer projects, I feel like this is something that may have been a mistake on your part, albeit something could have gone wrong with the framework.

I’m a bit confused as to what you are saying here, apologies.

Oop! It’s there, but not documented properly. To clarify, player is passed through function.

As in, how to use it?

It doesn’t?

DataStore2 may or may not have something like that, I can look into modifying it for that.

They are like module scripts, but already loaded in.

Instead of using something like require(script.Parent.Parent.Plugins.PluginName), you can just do self:GetPlugin("PluginName"). In addition, because it’s loaded only once on the framework, any variables or data changed in the plugin is seen by other scripts.


Thank you for your feedback, I will work on an update soon.

to specify even more Apologies for the events but Firing to the client needs an argument of player not unless if you want it to fire for all players like Event:FireAllClients(ArgPassHere)

1 Like

Update, as of 11/24/20.

Render and Step methods are now handled differently; instead of a single connection, there is a connection for every script.

This should improve the framework significantly.
Thanks to @loleris for explaining to me the benefits of this.

1 Like

Why should we use this instead of Aero Game Framework or Knit both made by Slietnick?

1 Like

I think rather than thinking about it as one-framework-wins-all, consider what each framework is going for.

Aero and Knit both focus on having seamless and lightweight communication; Yucon focuses on optimization.

So, if you want the optimization, go for Yucon. If you want communication, go for Aero or Knit.

3 Likes

I love this framework, it’s so simple yet intuitive.

My only issue is that there is no way to delete scripts you’ve made, which is an issue for me.

1 Like

There is, but you manually have to do it in the explorer.
I’ll add support soon :smiley:

I tried to do this but when I exited Studio and came back in, it was there again.

Could you show a video reproducing this? I would see no reason for this to happen.

Interesting Plug-in. Unfortunately, the organization of your module conflicts with my formatting. So I can’t use it.
Its a useful tool nonetheless.

1 Like