A Realistic Ski Resort!
For more info, including extra screenshots, just click on the link: Sannine Zenith Ski Resort
A Realistic Ski Resort!
For more info, including extra screenshots, just click on the link: Sannine Zenith Ski Resort
Trying to make a game that gets over 1000visits
Has been a very good 2019, lots of fun and lots of things to animate! As always, I am trying to improve my skills tremendously from where I am now, and hope this will be as productive as the last, if not more! Here’s what I did not post in the previous thread:
Biker wheelie:
https://giant.gfycat.com/DelightfulDirectAfricanjacana.mp4
https://giant.gfycat.com/DistantPhonyLiger.mp4
General character animations:
https://giant.gfycat.com/WildImpeccableFairyfly.mp4
https://giant.gfycat.com/SpottedAlertEmperorshrimp.mp4
https://giant.gfycat.com/RaggedReadyHapuka.mp4
https://giant.gfycat.com/HighOrangeAmericancrow.mp4
https://giant.gfycat.com/LoathsomeMadeupCrownofthornsstarfish.mp4
Test animations I did on a rig belonging to a very awesome game called Radispook by @ObrenTune:
https://giant.gfycat.com/SlowPoliticalAbalone.mp4
https://giant.gfycat.com/CompleteQuaintChrysomelid.mp4
https://giant.gfycat.com/AdorableRaggedBunting.mp4
Hopefully I will make a lot more than I had posted on the previous thread combined!
kerchow! Redid third person recoil animation & added some exhaust.
Polished a few things a little more…
Starting out by making some VR interaction API to make game development for this easier in the coming year
https://i.gyazo.com/7681101d26e1a1cfd12397605f4d451b.mp4
Improved the UI, added unique server name and server color, server list, improved the vehicles, added pie chart for server list. All fully functional, spent too long making server list and it looks nice and solid. Now, it’s time to work on the FPS engine
I’m working on an open world adventure game called Madness District, set in a retro inspired future where humanity is focusing only on Mars, and the Earth is simply becoming a relic of the past. Of course, people aren’t very positive about that, so… Let’s just say alot of things are happening.
My Tantive IV I work on and off on!
Made a cool little discord bot that gives users a Nitro chat tag in-game if they have nitro boosted my discord server.
It checks whether the user who used the command has boosted the server and proceeds to give the chat tag to their roblox username
This is my first game I have ever made related to games like Murder Mystery or Assassin, in which the pets that are given multiplies or “boosts” your coins/exp given.
(This game is only in beta, possibly alpha, but hope to add more things soon!)
Time to create: 8 months (with very few devs in which I could hire on here, but don’t have the necessary funds to do so.)
Also, with the update you are able to exchange fireworks collected during rounds for keys in which you can open the Event cases that way!
Ill do a full post of the completed house version on the day I fully complete it!
Promise it will be without blur!
Looks good! I hope to see your work in a game eventually!
I was hoping to ship that by the end of February of last year… and I just didn’t.
Due to some other projects I wanted to work on, I needed to rewrite the system from scratch. Still far from working on the new version of the plugin to make public, but I have made some good progress.
Some new features I have implemented are:
--[[
Tests the Skip method in Setup.
--]]
NexusUnitTesting:RegisterUnitTest("SkipInSetup",function(UnitTest)
--Create the component under testing.
local CuT = UnitTestClass.new("TestName")
--Set up the methods.
local SetupRun,TestRun,TeardownRun = false,false,false
function CuT:Setup()
SetupRun = true
UnitTest:AssertEquals(self.State,NexusUnitTestingProject.TestState.InProgress)
UnitTest:AssertEquals(self.CombinedState,NexusUnitTestingProject.TestState.InProgress)
self:Skip()
error("Test continued")
end
function CuT:Run()
TestRun = true
end
function CuT:Teardown()
TeardownRun = true
end
--Run the test and assert the states are correct.
UnitTest:AssertEquals(CuT.State,NexusUnitTestingProject.TestState.NotRun,"Test initially not run.")
UnitTest:AssertEquals(CuT.CombinedState,NexusUnitTestingProject.TestState.NotRun,"Test initially not run.")
CuT:RunTest()
UnitTest:AssertEquals(CuT.State,NexusUnitTestingProject.TestState.Skipped,"Test not skipped.")
UnitTest:AssertEquals(CuT.CombinedState,NexusUnitTestingProject.TestState.Skipped,"Test not skipped.")
UnitTest:AssertTrue(SetupRun,"Setup not ran.")
UnitTest:AssertFalse(TestRun,"Test ran.")
UnitTest:AssertFalse(TeardownRun,"Teardown ran.")
end)
-Better asserting of errors being thrown.
--[[
Tests the AssertErrors method.
--]]
NexusUnitTesting:RegisterUnitTest("AssertErrors",function(UnitTest)
--Create the component under testing.
local CuT = UnitTestClass.new("TestName")
CuT:SetSetup(function(UnitTest)
UnitTest:AssertErrors(function() error("Test error") end):Contains("Test"):Contains("error"):NotContains("something else"):NotEquals("something else")
end)
--Run the test and assert it passes.
UnitTest:AssertEquals(CuT.State,NexusUnitTestingProject.TestState.NotRun,"Test initially not run.")
UnitTest:AssertEquals(CuT.CombinedState,NexusUnitTestingProject.TestState.NotRun,"Test initially not run.")
CuT:RunTest()
UnitTest:AssertEquals(CuT.State,NexusUnitTestingProject.TestState.Passed,"Test not passed.")
UnitTest:AssertEquals(CuT.CombinedState,NexusUnitTestingProject.TestState.Passed,"Test not passed.")
end)
--[[
Tests the RunSubtests method without a failure.
--]]
NexusUnitTesting:RegisterUnitTest("RunSubtestsNoFailure",function(UnitTest)
--Create the component under testing.
local CuT1 = UnitTestClass.new("TestName1")
local CuT2 = UnitTestClass.new("TestName2"):SetSetup(function() UnitTest:AssertEquals(CuT1.CombinedState,NexusUnitTestingProject.TestState.InProgress) end)
local CuT3 = UnitTestClass.new("TestName3"):SetSetup(function() UnitTest:AssertEquals(CuT1.CombinedState,NexusUnitTestingProject.TestState.InProgress) end)
CuT1:RegisterUnitTest(CuT2)
CuT2:RegisterUnitTest(CuT3)
--Run the subtests and assert the state is correct.
CuT1.State = NexusUnitTestingProject.TestState.Passed
UnitTest:AssertEquals(CuT1.CombinedState,NexusUnitTestingProject.TestState.Passed,"Test state not correct.")
CuT1:RunSubtests()
UnitTest:AssertEquals(CuT1.CombinedState,NexusUnitTestingProject.TestState.Passed,"Test state not correct.")
UnitTest:AssertEquals(CuT2.State,NexusUnitTestingProject.TestState.Passed,"Test state not correct.")
UnitTest:AssertEquals(CuT2.CombinedState,NexusUnitTestingProject.TestState.Passed,"Test state not correct.")
UnitTest:AssertEquals(CuT3.State,NexusUnitTestingProject.TestState.Passed,"Test state not correct.")
UnitTest:AssertEquals(CuT3.CombinedState,NexusUnitTestingProject.TestState.Passed,"Test state not correct.")
end)
--[[
Tests a stack overflow error being thrown.
--]]
NexusUnitTesting:RegisterUnitTest("StackOverflow",function(UnitTest)
--Method that throws stack overflow.
local function StackOverflow()
StackOverflow()
end
--Call yxpcall with arguments.
local CalledError,CalledStackTrace
local Worked = yxpcall(function()
StackOverflow()
end,function(Error,StackTrace)
CalledError,CalledStackTrace = Error,StackTrace
end)
--Assert the results are correct.
UnitTest:AssertFalse(Worked,"Worked result is incorrect.")
UnitTest:AssertNotNil(string.find(CalledError,"stack overflow"),"Error message doesn't contain stack overflow.")
UnitTest:AssertNotNil(string.find(CalledStackTrace,"yxpcallTests"),"Error stack trace doesn't contain the script.")
UnitTest:AssertNotNil(string.find(CalledStackTrace,"StackOverflow"),"Error stack trace doesn't contain the function name.")
UnitTest:AssertTrue(#CalledStackTrace > 50000,"Stack trace isn't \"long\" ("..tostring(#CalledStackTrace).." < 50000 characters).")
end)
All of the code samples from above are tests used to test the new framework. The tests all pass, and should still work with the new version.
No ETA for a release of the plugin. Hoping to get the framework out by the end of next week.
Made a experimental Hole in Gui/Negative GUI thing( don’t know if it’s cool or useful, but why not), it has some issues, but with alot of experimental stuff( at least for me) there is bound to be some :
For those wondering this is made using the Deuluany triangulation algorithm and a couple other methods to go along with it(Point in Polygon(2d “raycasting”) , Clockwise vertex/vector sorting).
(btw it with works with any number of points, not just four, so theoretically circular holes can be made or really any shape)
The triangulation makes triangles that perfectly fit and surround within the bounds in the Hole, then the Centroid of each triangle is found to check whether the triangle is in the hole, indicating that it needs to be hidden