Skip to content

Commit 58b32e7

Browse files
committed
Fixes & type fixes
1 parent 1da2b8d commit 58b32e7

12 files changed

Lines changed: 71 additions & 35 deletions

File tree

CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,14 @@ ByteNet uses [semantic versioning](https://semver.org/spec/v2.0.0.html).
88

99
### Improvements
1010

11-
-
11+
- Arrays are now forced to have number indexes
12+
13+
### Fixes
14+
15+
- Added all of the new data types to the ByteNet type.
16+
- Fixed the client not clearing instance references
17+
- Fixed the client sending a buffer every frame
18+
- Fixed instances/unknowns not being sendable in any special type
1219

1320
---
1421

dev/server/serverTests.server.luau

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,17 @@ RunService.Heartbeat:Connect(function()
3333
ReplicatedStorage.RemoteEvent:FireAllClients(data)
3434
end]]
3535

36-
debug.profilebegin("send")
36+
--[[debug.profilebegin("send")
3737
for _ = 1, 100 do
3838
--ReplicatedStorage.RemoteEvent:FireAllClients(out)
3939
testPackets.myPacket.sendToAll(out)
4040
end
41-
debug.profileend()
41+
debug.profileend()]]
4242
end)
4343

4444
Players.PlayerAdded:Connect(function()
4545
task.wait(1)
46-
testPackets.myPacket.sendToAll({
47-
myMessage = "",
48-
})
46+
testPackets.myPacket.sendToAll()
4947
end)
5048

5149
testPackets.myPacket.listen(function(a)

dev/shared/testPackets.luau

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage")
33
local ByteNet = require(ReplicatedStorage.Packages.ByteNet)
44
--
55
return ByteNet.defineNamespace("game", function()
6-
local myStruct = ByteNet.struct({
7-
a = ByteNet.inst,
8-
})
9-
106
return {
117
myPacket = ByteNet.definePacket({
12-
value = ByteNet.array(myStruct),
8+
value = ByteNet.nothing,
9+
reliabilityType = "reliable",
1310
}),
1411
}
1512
end)

sourcemap.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"name":"bytenet-dev","className":"DataModel","filePaths":["dev.project.json"],"children":[{"name":"ReplicatedStorage","className":"ReplicatedStorage","children":[{"name":"Packages","className":"Folder","children":[{"name":"ByteNet","className":"ModuleScript","filePaths":["src\\init.luau"],"children":[{"name":"dataTypes","className":"Folder","children":[{"name":"array","className":"ModuleScript","filePaths":["src\\dataTypes\\array.luau"]},{"name":"bool","className":"ModuleScript","filePaths":["src\\dataTypes\\bool.luau"]},{"name":"buff","className":"ModuleScript","filePaths":["src\\dataTypes\\buff.luau"]},{"name":"cframe","className":"ModuleScript","filePaths":["src\\dataTypes\\cframe.luau"]},{"name":"float32","className":"ModuleScript","filePaths":["src\\dataTypes\\float32.luau"]},{"name":"float64","className":"ModuleScript","filePaths":["src\\dataTypes\\float64.luau"]},{"name":"inst","className":"ModuleScript","filePaths":["src\\dataTypes\\inst.luau"]},{"name":"int16","className":"ModuleScript","filePaths":["src\\dataTypes\\int16.luau"]},{"name":"int32","className":"ModuleScript","filePaths":["src\\dataTypes\\int32.luau"]},{"name":"int8","className":"ModuleScript","filePaths":["src\\dataTypes\\int8.luau"]},{"name":"map","className":"ModuleScript","filePaths":["src\\dataTypes\\map.luau"]},{"name":"nothing","className":"ModuleScript","filePaths":["src\\dataTypes\\nothing.luau"]},{"name":"optional","className":"ModuleScript","filePaths":["src\\dataTypes\\optional.luau"]},{"name":"string","className":"ModuleScript","filePaths":["src\\dataTypes\\string.luau"]},{"name":"struct","className":"ModuleScript","filePaths":["src\\dataTypes\\struct.luau"]},{"name":"uint16","className":"ModuleScript","filePaths":["src\\dataTypes\\uint16.luau"]},{"name":"uint32","className":"ModuleScript","filePaths":["src\\dataTypes\\uint32.luau"]},{"name":"uint8","className":"ModuleScript","filePaths":["src\\dataTypes\\uint8.luau"]},{"name":"unknown","className":"ModuleScript","filePaths":["src\\dataTypes\\unknown.luau"]},{"name":"vec2","className":"ModuleScript","filePaths":["src\\dataTypes\\vec2.luau"]},{"name":"vec3","className":"ModuleScript","filePaths":["src\\dataTypes\\vec3.luau"]}]},{"name":"namespaces","className":"Folder","children":[{"name":"namespace","className":"ModuleScript","filePaths":["src\\namespaces\\namespace.luau"]},{"name":"namespacesDependencies","className":"ModuleScript","filePaths":["src\\namespaces\\namespacesDependencies.luau"]},{"name":"packetIDs","className":"ModuleScript","filePaths":["src\\namespaces\\packetIDs.luau"]}]},{"name":"packets","className":"Folder","children":[{"name":"definePacket","className":"ModuleScript","filePaths":["src\\packets\\definePacket.luau"]},{"name":"packet","className":"ModuleScript","filePaths":["src\\packets\\packet.luau"]}]},{"name":"process","className":"Folder","children":[{"name":"bufferWriter","className":"ModuleScript","filePaths":["src\\process\\bufferWriter.luau"]},{"name":"client","className":"ModuleScript","filePaths":["src\\process\\client.luau"]},{"name":"read","className":"ModuleScript","filePaths":["src\\process\\read.luau"]},{"name":"server","className":"ModuleScript","filePaths":["src\\process\\server.luau"]}]},{"name":"replicated","className":"Folder","children":[{"name":"replicatedValue","className":"ModuleScript","filePaths":["src\\replicated\\replicatedValue.luau"]},{"name":"values","className":"ModuleScript","filePaths":["src\\replicated\\values.luau"]}]},{"name":"types","className":"ModuleScript","filePaths":["src\\types.luau"]}]}]},{"name":"shared","className":"Folder","children":[{"name":"testPackets","className":"ModuleScript","filePaths":["dev/shared\\testPackets.luau"]}]}]},{"name":"ServerScriptService","className":"ServerScriptService","children":[{"name":"server","className":"Folder","children":[{"name":"serverTests","className":"Script","filePaths":["dev/server\\serverTests.server.luau"]}]}]},{"name":"StarterPlayer","className":"StarterPlayer","children":[{"name":"StarterPlayerScripts","className":"StarterPlayerScripts","children":[{"name":"clientTests","className":"LocalScript","filePaths":["dev/client\\clientTests.client.luau"]}]}]}]}
1+
{"name":"bytenet-dev","className":"DataModel","filePaths":["dev.project.json"],"children":[{"name":"ReplicatedStorage","className":"ReplicatedStorage","children":[{"name":"Packages","className":"Folder","children":[{"name":"ByteNet","className":"ModuleScript","filePaths":["src\\init.luau"],"children":[{"name":"dataTypes","className":"Folder","children":[{"name":"array","className":"ModuleScript","filePaths":["src\\dataTypes\\array.luau"]},{"name":"bool","className":"ModuleScript","filePaths":["src\\dataTypes\\bool.luau"]},{"name":"buff","className":"ModuleScript","filePaths":["src\\dataTypes\\buff.luau"]},{"name":"cframe","className":"ModuleScript","filePaths":["src\\dataTypes\\cframe.luau"]},{"name":"float32","className":"ModuleScript","filePaths":["src\\dataTypes\\float32.luau"]},{"name":"float64","className":"ModuleScript","filePaths":["src\\dataTypes\\float64.luau"]},{"name":"inst","className":"ModuleScript","filePaths":["src\\dataTypes\\inst.luau"]},{"name":"int16","className":"ModuleScript","filePaths":["src\\dataTypes\\int16.luau"]},{"name":"int32","className":"ModuleScript","filePaths":["src\\dataTypes\\int32.luau"]},{"name":"int8","className":"ModuleScript","filePaths":["src\\dataTypes\\int8.luau"]},{"name":"map","className":"ModuleScript","filePaths":["src\\dataTypes\\map.luau"]},{"name":"nothing","className":"ModuleScript","filePaths":["src\\dataTypes\\nothing.luau"]},{"name":"optional","className":"ModuleScript","filePaths":["src\\dataTypes\\optional.luau"]},{"name":"string","className":"ModuleScript","filePaths":["src\\dataTypes\\string.luau"]},{"name":"struct","className":"ModuleScript","filePaths":["src\\dataTypes\\struct.luau"]},{"name":"uint16","className":"ModuleScript","filePaths":["src\\dataTypes\\uint16.luau"]},{"name":"uint32","className":"ModuleScript","filePaths":["src\\dataTypes\\uint32.luau"]},{"name":"uint8","className":"ModuleScript","filePaths":["src\\dataTypes\\uint8.luau"]},{"name":"unknown","className":"ModuleScript","filePaths":["src\\dataTypes\\unknown.luau"]},{"name":"vec2","className":"ModuleScript","filePaths":["src\\dataTypes\\vec2.luau"]},{"name":"vec3","className":"ModuleScript","filePaths":["src\\dataTypes\\vec3.luau"]}]},{"name":"namespaces","className":"Folder","children":[{"name":"namespace","className":"ModuleScript","filePaths":["src\\namespaces\\namespace.luau"]},{"name":"namespacesDependencies","className":"ModuleScript","filePaths":["src\\namespaces\\namespacesDependencies.luau"]},{"name":"packetIDs","className":"ModuleScript","filePaths":["src\\namespaces\\packetIDs.luau"]}]},{"name":"packets","className":"Folder","children":[{"name":"definePacket","className":"ModuleScript","filePaths":["src\\packets\\definePacket.luau"]},{"name":"packet","className":"ModuleScript","filePaths":["src\\packets\\packet.luau"]}]},{"name":"process","className":"Folder","children":[{"name":"bufferWriter","className":"ModuleScript","filePaths":["src\\process\\bufferWriter.luau"]},{"name":"client","className":"ModuleScript","filePaths":["src\\process\\client.luau"]},{"name":"read","className":"ModuleScript","filePaths":["src\\process\\read.luau"]},{"name":"readRefs","className":"ModuleScript","filePaths":["src\\process\\readRefs.luau"]},{"name":"server","className":"ModuleScript","filePaths":["src\\process\\server.luau"]}]},{"name":"replicated","className":"Folder","children":[{"name":"replicatedValue","className":"ModuleScript","filePaths":["src\\replicated\\replicatedValue.luau"]},{"name":"values","className":"ModuleScript","filePaths":["src\\replicated\\values.luau"]}]},{"name":"types","className":"ModuleScript","filePaths":["src\\types.luau"]}]}]},{"name":"shared","className":"Folder","children":[{"name":"testPackets","className":"ModuleScript","filePaths":["dev/shared\\testPackets.luau"]}]}]},{"name":"ServerScriptService","className":"ServerScriptService","children":[{"name":"server","className":"Folder","children":[{"name":"serverTests","className":"Script","filePaths":["dev/server\\serverTests.server.luau"]}]}]},{"name":"StarterPlayer","className":"StarterPlayer","children":[{"name":"StarterPlayerScripts","className":"StarterPlayerScripts","children":[{"name":"clientTests","className":"LocalScript","filePaths":["dev/client\\clientTests.client.luau"]}]}]}]}

src/dataTypes/inst.luau

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
local bufferWriter = require(script.Parent.Parent.process.bufferWriter)
2+
local readRefs = require(script.Parent.Parent.process.readRefs)
23
local types = require(script.Parent.Parent.types)
34

45
local reference = bufferWriter.reference
@@ -11,12 +12,14 @@ return function(): types.dataTypeInterface<Instance?>
1112
reference(value)
1213
end,
1314

14-
read = function(b: buffer, cursor: number, references)
15-
if not references then
15+
read = function(b: buffer, cursor: number)
16+
local refs = readRefs.get()
17+
18+
if not refs then
1619
return nil, 1
1720
end
1821

19-
local ref = references[buffer.readu8(b, cursor)]
22+
local ref = refs[buffer.readu8(b, cursor)]
2023

2124
if typeof(ref) == "Instance" then
2225
return ref, 1

src/dataTypes/unknown.luau

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
local bufferWriter = require(script.Parent.Parent.process.bufferWriter)
2+
local readRefs = require(script.Parent.Parent.process.readRefs)
23
local types = require(script.Parent.Parent.types)
34

45
local reference = bufferWriter.reference
@@ -11,12 +12,14 @@ return function(): types.dataTypeInterface<unknown>
1112
reference(value)
1213
end,
1314

14-
read = function(b: buffer, cursor: number, references)
15-
if not references then
15+
read = function(b: buffer, cursor: number)
16+
local refs = readRefs.get()
17+
18+
if not refs then
1619
return nil, 1
1720
end
1821

19-
return references[buffer.readu8(b, cursor)], 1
22+
return refs[buffer.readu8(b, cursor)], 1
2023
end,
2124
}
2225
end

src/process/bufferWriter.luau

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ function bufferWriter.reference(value: any)
7070

7171
buffer.writeu8(buff, cursor, index)
7272
cursor += 1
73+
print(references)
7374
end
7475

7576
function bufferWriter.u16(value: number)

src/process/client.luau

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ local alloc = bufferWriter.alloc
99
local u8 = bufferWriter.u8
1010
local load = bufferWriter.load
1111

12-
local function onClientEvent(receivedBuffer)
13-
read(receivedBuffer)
12+
local function onClientEvent(receivedBuffer, ref)
13+
read(receivedBuffer, ref)
1414
end
1515

1616
-- Shared with: src/process/server.luau (Infeasible to split this into another file)
@@ -23,13 +23,13 @@ local function create()
2323
}
2424
end
2525

26-
local function dump(channel: types.channelData): buffer
26+
local function dump(channel: types.channelData): (buffer, { unknown }?)
2727
local cursor = channel.cursor
2828
local dumpBuffer = buffer.create(cursor)
2929

3030
buffer.copy(dumpBuffer, 0, channel.buff, 0, cursor)
3131

32-
return dumpBuffer, channel.references
32+
return dumpBuffer, if #channel.references > 0 then channel.references else nil
3333
end
3434
-- No longer shared
3535

@@ -67,17 +67,21 @@ function clientProcess.start()
6767

6868
RunService.Heartbeat:Connect(function()
6969
-- Again, checking if there's anything in the channel before we send it.
70-
if reliable ~= nil then
71-
reliableRemote:FireServer(dump(reliable))
70+
if reliable.cursor > 0 then
71+
local b, r = dump(reliable)
72+
reliableRemote:FireServer(b, r)
7273

7374
-- effectively clears the channel
7475
reliable.cursor = 0
76+
table.clear(reliable.references)
7577
end
7678

77-
if unreliable ~= nil then
78-
unreliableRemote:FireServer(dump(unreliable))
79+
if unreliable.cursor > 0 then
80+
local b, r = dump(unreliable)
81+
unreliableRemote:FireServer(b, r)
7982

8083
unreliable.cursor = 0
84+
table.clear(unreliable)
8185
end
8286
end)
8387
end

src/process/read.luau

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
local packetIDs = require(script.Parent.Parent.namespaces.packetIDs)
2+
local readRefs = require(script.Parent.readRefs)
23

34
local ref = packetIDs.ref()
45
local freeThread: thread?
@@ -29,11 +30,13 @@ return function(incomingBuffer: buffer, references: { [number]: unknown }?, play
2930
local length = buffer.len(incomingBuffer)
3031
local readCursor = 0
3132

33+
readRefs.set(references)
34+
3235
while readCursor < length do
3336
local packet = ref[buffer.readu8(incomingBuffer, readCursor)]
3437
readCursor += 1
3538

36-
local value, valueLength = packet.reader(incomingBuffer, readCursor, references)
39+
local value, valueLength = packet.reader(incomingBuffer, readCursor)
3740

3841
readCursor += valueLength
3942

src/process/readRefs.luau

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
local current
2+
3+
local readRefs = {}
4+
5+
function readRefs.set(refTable)
6+
current = refTable
7+
end
8+
9+
function readRefs.get()
10+
return current
11+
end
12+
13+
return readRefs

0 commit comments

Comments
 (0)