Volt - An efficient & powerful game framework

local Volt = require(game.ReplicatedStorage.Volt)
local InstanceBuilder = Volt.import('Libraries/InstanceBuilder')

why use forward slashes?

Why not? They are used to require and import folders almost everywhere

3 Likes

For readability and functionality purposes. Using a forward slash based directory system looks clean and inherits the style of Unix & Mac file systems. Is there a different way you believe is more user-friendly?

3 Likes

Volt | v1.0.1

:floppy_disk: Download

:new: What’s New

  • Updated and far more in-depth documentation using GitHub Pages
    • Thanks to @OminousVibes0 for pointing out the current documentation was lackluster this should seriously help
  • Libraries now require a name property
  • Libraries can now be directly referenced from Volt.Libraries
    • However, importing them is still recommended as direct references may break functionality
  • Libraries are now injected into each other
  • Added a variety of new built-in libraries
    • Maid by Quenty
    • Array by Validark
    • Spring by fractality
    • Table by Quenty
    • Signal by Quenty
4 Likes

I guess it’s a stylistic choice, but seems against the Lua standard of using dots. Personally, even if the resources taken up for string manipulation are negligible, I’d go with dots. I know Roblox’s intellisense is garbage, but they might fix it in the future.

Volt Plugin

Information

Quickly create executables with this plugin. Executables can be tedious to create and the plugin simplifies the process. Type your executable name in the UI and hit Create. You’ll get yourself a new folder with two generated client & server executables containing base code to work off of. They also will automatically append .Client and .Server to follow Volt naming conventions.

image

image

image

image

Download

https://www.roblox.com/library/6899608114/Volt-Plugin

Framework? What’s this used for? Like an FPS Framework or- Something highly unrelated?

It’s a bad idea in the extremely rare case of someone with the name LocalPlayer joining the game. I’ve seen games being broken because players, who had their names coincidentally be the properties or events of the Players service, broke the whole server handler.
It’s bad practice not to use IsClient.

I never stated to really explicitly just use LocalPlayer, RunService:IsClient is of course the main way and good practice anyways.

what even is a game framework?

Game frameworks act as ways to simplify game development and provide tools to make game development easier. Volt is a general-purpose framework. Let’s say you were making a money system for your game. You want the server to handle and store player money. You want the client to be able to get how much money a player has for let’s say a Shop GUI. Normally you would have to write a lot of code to get this done. You would have to write a module for storing the player money data, a server script for handling the remote function for getting player money, then also write a way for the server script to interact with the module storing the data. Don’t forget about actually having to create and organize all these scripts and the remote function.

With Volt you can do all this in two scripts. And organizing? Volt provides a nice path system that will simplify game:GetService('ReplicatedStorage'):FindFirstChild('Something'):FindFirstChild('SomethingElse') down to 'Something/SomethingElse'. Using the Volt framework you have one script for your money that handles storing it as well as registering bridges, a Volt feature for communicating between the client and server, and another script for your client that will just handle your GUI.

There’s a nice in-depth example over here you can check out if you want to see something similar in code.

@Trickstaarz Since you asked the same question feel free to read this

2 Likes

Volt | v1.0.2

:floppy_disk: Download

:new: What’s New

  • In-depth Volt debugging

  • Await() function to wait for an executable being executed after to complete. Helps break the strict linear control flow and allow for web-like branching out. This is the first in a series of methods to help accomplish this.

:file_folder: GitHub

Check everything out over at the GitHub release:

2 Likes

Volt | v1.0.3

:floppy_disk: Download

:new: What’s New

  • Documentation updates
  • Changed the library format and added categories
    • name attribute changed to Name
    • Some libraries have been removed and new ones have been created.
  • Await() is now available on the client
  • Await() will now return a Promise

:file_folder: GitHub

2 Likes

i can tell what’s inside

function import(location)
  local args = location:split('/')
  for index, object in next, game:GetDescendants() do
    if object:IsA('Folder') and object.Name == args[1] then
      if not args[2] then return object end
      if object:FindFirstChild(args[2]) then return object:WaitForChild(args[2]) end
    end
  end
  return nil
end
2 Likes

This is great! I really appreciate the amount of effort you have put in to create this and share it with the community.

Also, I admire your script editor theme. Is it possible for you to show what you’re using?
Thank you!

1 Like

Thanks glad to know you like it. I’m working hard to turn Volt into a popular game development tool.

Here’s my script editor theme I provided it up above for someone else who was also interested in it

1 Like

I would like to know how to get FiraCode in studio? I cant seem to find it :fearful:

1 Like

You have to manually install it onto your PC from here.

1 Like

This is actually super interesting and might move to this. I would recommend making a discord server to ask questions and other stuff. And also what ihovac said, add more modules. Keep up the good work! It has a ton of potential :slight_smile:

1 Like
local volt= require(game.ReplicatedStorage.Volt)
local toexecute = {volt.import('SetUp.Server')}
local children = game.ReplicatedStorage.executables:GetChildren()
for i = #children ,1,-1 do
toexecute[#toexecute+1] = volt.import(children[i].Name..'.Server')
end

volt.Server.Execute(toexecute)

local setup = volt.import('SetUp.Server')

for some reason import isnt returning i printed to execute and it was empty so was setup pls help