CraftStudio Beta is released!

I’m incredibly pleased to announce that CraftStudio Beta is finally out!

After over 4 months of work, this new release is a huge step towards making CraftStudio more polished, easy-to-use and powerful.

Read on for an overview of all the many changes!

Redesigned user interface

The new user interface is slicker, more space-efficient, warmer and features many improvements to make your CraftStudio life easier.

The new project list allows adding, reordering and removing projects on the fly:

NewProjectList

On the home pane, each released game now features its own news feed so that you can keep your players in the loop as you release updates! (more on this soon)

GameNewsFeed

The chat panes can now be collapsed to leave more room to your game crafting:

ChatCollapsing

I added a built-in help system to get started. It’s a bit light on content right now but that will get better over time:

HelpSystem

The launcher was redesigned too and displays your own picture when you log in:

Built-in physics engine

This was the top-voted feature request on UserVoice and rightly so: collision handling without a physics engine is a nightmare of manual raycasting and distance checking. No longer!

Check out those two little demos to get a sense of what’s possible now:

Car versus Wall

 

Beachball (a little Neverball-like)

 

New website, store and Web player

The new website is brighter, simpler to navigate and showcases CraftStudio much better.

There’s now a Store page where you can play a few CraftStudio games directly in your browser using the newly developed Web player.

I had to start somewhere so I took a bunch of games and made sure they worked fairly well with the Web player. Some features are still missing so not all games work but most do. Once I’m ready to accept more games, you’ll be able to submit your own for inclusion in the CraftStudio store! Stay tuned.

And I’ve found myself playing tons of MineMatcher during development ;)

Friending system, user pictures

Say hi to user pictures (you can define your in your all-new account page), private chat and online status for your friends:

ConfirmNewFriend

There’s a group chat option too but it’s not yet implemented (sorry :D). Further improvements are planned including an easy way to see which projects your friends are currently working on.

Initial Linux support

It’s been a long time coming, but finally, the Linux build of CraftStudio (thanks to the very awesome MonoGame framework) has gotten good enough that a release is possible.

Now don’t get too excited just yet: it’s full of bugs :D. Mouse look doesn’t work right, the proper CraftStudio app icon isn’t showing up and it’s probably broken in subtle ways. BUT you can install it and play yourself some CraftStudio games, join projects, even edit stuff.

I’ll keep working on improving it, it should get better fast now that it’s out the door.

Scripting API improvements

Lots of cool little improvements:

  • You can now type CS instead of CraftStudio as a shorthand for CraftStudio functions
  • You can use self.gameObject.modelRenderer, self.gameObject.mapRenderer and co. instead of self.gameObject:GetComponent( … )
  • Various new / fixed visual scripting blocks for setting / getting the screen size, setting the master audio volume and more
  • Added new API functions:
    • TileSet.GetTileSize
    • ModelRenderer.GetAnimationTime and ModelRenderer.GetAnimationDuration
  • The random number generator is now initialized by default, you don’t need to call math.randomseed() anymore
  • You can specify a table of properties to set on your new scripted behavior when creating with GameObject:CreateScriptedBehavior

Strict global variables

Strict global variables are now enabled by default (starting with the Script API version 5). This means you can’t use or assign a value to a global variable in a function unless you have assigned it at the global scope (outside of all functions, aka. at the root of a script). Here’s an example:

function Behavior:Awake()
  -- Woops, I forgot to use the local keyword
  -- and now my variable is leaking to all scripts
  theCamera = CraftStudio.FindGameObject( "Player Camera" )
end

This used to silently create a global variable theCamera which would be accessible in all scripts. But now, it’ll output an error saying you’re assigning a value to an undefined global variable.

Now, if you want to use a global variable, you can do it like that:

theCamera = nil

function Behavior:Awake()
  -- See, I'm totally doing this on purpose,
  -- I announced the variable above!
  theCamera = CraftStudio.FindGameObject( "Player Camera" )
end

A temporary caveat: For visual scripting, you’ll need to create a regular text script in your project and add all your global variable declarations there for now. No need to include it on any game object or anything, but there is no way to declare global variables in visual scripting just yet. I’ll remedy that ASAP.

Project address update

When running a server on your local computer, you might have a dynamic IP address which means people who added your project before won’t be able to connect again when your IP changes.

When a server doesn’t respond, CraftStudio will now look for other servers with the same project so that you can switch easily:

UpdateConnectionDetails

Miscellaneous

  • You can make CraftStudio fullscreen by hitting F11 on Windows
  • You can now easily get a link to share your project by using the /projectlink command in the chat
  • The chat now supports clickable links
  • Projects are now sorted by online members count by default in the Community Projects pane
  • The launcher lets you decide whether to remember your login or not
  • The last selected script mode (visual / Lua) is now remembered to avoid having to select it over and over again
  • Folders are collapsed by default when opening an asset selection popup
  • Lots of bug fixes, crash fixes & performance improvements :)

What’s next

Sleep! Just kidding… First I’ve got a bunch of loose ends to tie up: adding more physics engine scripting functions and bake in the one-click Web export feature, most importantly. Then, the next few major features I’ll tackle are:

  • Netplay in CraftStudio games! This has been a long time coming and I’ve incredibly excited to finally get started on it…
  • Built-in store: the Web store is a first step but I want to add a similar store inside CraftStudio to make browsing/sharing games & assets much easier. Also support rating, commenting & the like.
  • Lightging: this will make your CraftStudio games magically prettier and allow for cool atmospheres!

One last thing…

I’d like to take this opportunity to say THANKS for your continued support as CraftStudio slowly but surely grows. Developing such a behemoth of a project is sometimes stressful and arduous but it’s worth it when I see all the awesome stuff you guys are building and how excited you all are :).

Wanna help spread the word? Tweeting about CraftStudio and sharing it with your friends would go a long way!

Pirate v02

Pirate Artwork by @ThomasFrick