Nevermore Engine is a module-loader designed to simplify the loading of libraries and unify the networking of resources between the client and server. Nevermore comes equipped with a large codebase of useful libraries intended to streamline game development on Roblox.
- OOP - Many of Nevermore's libraries employ Object-Oriented Programming
- Lazy loading - Libraries won't load unless asked to (Consequently, Nevermore will not impact game performance)
- Many useful libraries - Nevermore's libraries handle logical issues to decrease the number of code-based errors that occur during game development
- Tested - Nevermore functions properly without testing
- Simple - Nevermore is designed with simplicity in mind:
- The loader itself only includes 105 lines of code
- Fast and easy install; just paste installer code into Command Bar
- Open source - Nevermore is open source. Includes modules contributed by experienced scripters!
- Built for Roblox - Made specifically for use on Roblox
- Works well with existing frameworks - Nevermore doesn't interfere with existing code
Here are a few of the features that Nevermore's libraries offer:
- 3D rendering
- Additive Camera effects
- Admin commands
- Bezier Curves
- Compass code
- Custom Signals
- GUI transparency and Color3 animation code
- HeldInputs
- Kinetic scrolling frame (mobile inertia scrollling)
- Material design UI code
- Ripple
- Snackbar
- Player manipulation utilities (check teammates et cetera)
- Projectile physics
- Promises
- Pseudo chat
- RemoteEvent and RemoteFunction manager
- Rotating text labels
- Screen cover effects
- Time formatting (os.date)
- TimeSync between server and client
- Title generation
- Type checkers
- Useful Data Structures
- Welding
- CFrame manipulation code
- Quaternion slerp
To Install Nevermore, paste the following code into your command bar.
local h = game:GetService("HttpService") local e = h.HttpEnabled h.HttpEnabled = true loadstring(h:GetAsync("https://raw.githubusercontent.com/Quenty/NevermoreEngine/master/Install.lua"))() h.HttpEnabled = e
- The main NevermoreModule in
ReplicatedStorage
- All the modules in
ServerScriptService
Please note that installing Nevermore will not change any behavior in your game. Nevermore does not affect preexisting code. If you want to see the power of Nevermore try using some Admin Commmands.
To update Nevermore, back up your place file and run the install code above. Existing code will be preserved, however, Nevermore's default libraries will be overridden.
To load Nevermore on your server and client, use the following header code:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LoadCustomLibrary = require(ReplicatedStorage:WaitForChild("NevermoreEngine"))
With the above code, you can easily load a library and all dependencies
local qSystems = LoadCustomLibrary("qSystems")
Libraries have different functions with a variety of useful methods. For example, let's say we want to make a lava brick.
Vanilla RobloxLua code to turn all Part
s into killing bricks:
local function HandleTouch(Part)
-- Recursively find the humanoid
local Humanoid = Part:FindFirstChild("Humanoid")
if not Humanoid then
if Part.Parent then
return HandleTouch(Part.Parent)
end
elseif Humanoid:IsA("Humanoid") then
Part.Humanoid:TakeDamage(100)
end
end
local function RecurseApplyLava(Parent)
for _, Item in pairs(Parent:GetChildren()) do
if Item:IsA("BasePart") then
Item.Touched:connect(HandleTouch)
end
RecurseApplyLava(Item)
end
end
RecurseApplyLava(workspace)
Simpler code utilizing Nevermore's libraries:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LoadCustomLibrary = require(ReplicatedStorage:WaitForChild("NevermoreEngine"))
local qSystems = LoadCustomLibrary("qSystems")
local function HandleTouch(Part)
local Humanoid = qSystems.GetHumanoid(Part)
if Humanoid then
Humanoid:TakeDamage(100)
end
end
qSystems.CallOnChildren(workspace, function(Item)
if Item:IsA("BasePart") then
Item.Touched:connect(HandleTouch)
end
end)
Put NevermoreEngine.lua
's content's in game.ReplicatedStorage
in a ModuleScript name NevermoreEngine
Put all the modules in a folder in game.ServerScriptStorage
and name them the names of their script, but without
.lua
game
ReplicatedStorage
`ModuleScript` NevermoreEngine
ServerScriptStorage
`Folder` Nevermore
`Folder` qSystems
`ModuleScript` qSystems
... more libraries
... more folders and libraries
For help or questions, contact ONE of the following. (You may need to follow a user to contact them on Roblox)
- Contact Narrev on Roblox
This change log is strictly for Nevermore's module and documentation only.
- Moved NevermoreEngine into a simplified module that had 3 API components, for loading Libraries, RemoteEvents, and RemoteFunctions
- Removed :Import() syntax
- Lots of bug fixes
- Redesign of class architecture should be coming soon
- Specifically designed for testing
- Existing implimentation has lots of errors
- Lots of bug fixes
- Was not updated to use ReplicatedFirst because of the way Roblox currently handles replicated first
- Updates planned to make Nevermore more accessible
- Documentation added, more to come.
- Fixed
RemoteEvent
Firing in server - Updated
- Pushed to github
- Fixed release notes for MD
- Made Parent argument in GetDataStreamObject optional. Defaults to bin.
- Made Parent argument in GetEventStreamObject optional. Defaults to bin.
- Added Workspace.FilteringEnabled as a property on Configuration
- Updated system to work with Workspace.FilteringEnabled.
- Updated so it does not warn when unregistered requests come through to prevent bug with output streams looping output from the server on error. (ehhhh, I'm not sure how I fix that.).
- Now clients wait for DataStreamObject's to replicate from the server, instead of creating them themselves, because they cannot create them themselves.
- Fixed character loading issue
- Moved events with character load
- Removed client loader dependency
- Added GetSplashEnabled function
- Fixed firing client bug
- Fixed serverside bug with event storage
- Added EventStream
- Added new setting "EventStreamName"
- Added new bin in the replicated bin thing for EventStreams
- Add GetDataStreamObject to public API
- Add GetEventStreamObject and make it public
- Added more documentation
- Updated networking against.
- Removed ypcall wrapping as ModuleScripts have been fixed.
- Fixed data replication package being cleared / nilled
- Debugged networking in server mode.
- Fixed problem with client / server networking
- Added SendSpawn property to DataStreams, as a networking option.
- Recursion added to modules, will now recurse through everything not a script, local script, or module script in search of resources.
- ypcall wrapped Nevermore for debugging, until modulescripts are fixed.
- Nevermore works as expected in solo mode and solotest mode