Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411283 Posts in 69325 Topics- by 58380 Members - Latest Member: bob1029

March 28, 2024, 11:40:35 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsCraftStudio: game-making for gamers (real-time collaborative!)
Pages: [1] 2 3 ... 10
Print
Author Topic: CraftStudio: game-making for gamers (real-time collaborative!)  (Read 67674 times)
elisee
Level 1
*



View Profile WWW
« on: November 24, 2011, 03:57:09 PM »

Testing... Is this on? Ahem, here we go! Gentleman



Game-making for gamers
An online cooperative platform to make games and movies


In a nutshell...
I'm building a game / platform named CraftStudio. It features block-based 3D modelling, a voxel map editor and (optionally visual) scripting. And it's all real-time: you can make a game (or movie) just like you would play Minecraft, with a bunch of buddies. Setup a project, invite your friends and start building awesome stuff! Smiley

Some games made with CraftStudio


Why?
I think making a good game is hard for the wrong reasons. Mechanics, graphics, sfx, story, levels, fine tuning, testing... All of this is hard work that will make it into the game, and that's fine. That's what game dev is about!

What's sad is that there's an *awful lot* of technical stuff you need to learn, making it very hard to get into game dev. Undecided Not everyone needs (or wants) to learn a bazillion programming tricks. I want to let more people jump right in and have fun making art/games/movies/whatever.

So, yeah, that's why I'm building CraftStudio. And also because I'd love to make games with friends (and get to know people while making games, too!).


Core features
There are great tools like Construct, Game Maker, Unity, etc. doing a good job of making game dev more accessible. But I want more:

  • It's real-time collaborative: everything you do happens right on the server. You can interact with your friends, tweak a 3D model, a texture, a behavior together, in real-time.
  • It includes pretty much everything you need: models, maps, scenes & scripts are all created within CraftStudio. (Hopefully sounds & musics too at some point!)
  • It's gamey: Game dev is exciting, challenging, rewarding. By taking out the technical hurdles, it pretty much becomes a game of its own.


And you can make games with it already!
I've been working on CraftStudio for the past year or so. You can create and animate models, make maps, scenes, edit documents and scripts together in real-time then export your game and play it. In this devlog, I'll try to talk about design decisions, technical challenges and other interesting stuff I struggle with as I'm making progress.

CraftStudio has now reached Alpha status, the Premium version is available right now for 15 € (50% off from the final price). The free version is still available but you'll need a Premium account for scripting and to export your games.

(Also check out my self-introductory post if you want to get to know me a little more!)
« Last Edit: June 06, 2015, 08:31:47 AM by elisee » Logged

negativeview
Level 0
***


View Profile
« Reply #1 on: November 24, 2011, 04:43:28 PM »

Awesome. I cannot give specific feedback at this time as I am Mac only for a bit, but the idea makes me happy. It sounds like you have enough working to ease fears of this being the dream of some rank beginner (I did not read your bio, if you are a beginner you must be more skilled than most). I look forward to trying this once I get the Windows machine.
Logged

Tanner
Level 10
*****


MMPHM *GULP*


View Profile WWW
« Reply #2 on: November 24, 2011, 08:40:38 PM »

Holy dang, this sounds awesome! Checking it out now.
Logged

gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #3 on: November 24, 2011, 08:58:10 PM »

you steal my jaws, I want my jaws back, It's you I know, it was falling on the floor and i didn't see it back
Logged

elisee
Level 1
*



View Profile WWW
« Reply #4 on: November 25, 2011, 04:33:57 AM »

Wow, thanks for the kind comments  Grin. (Oh, and sorry about your jaw Gimmy, I think I saw it slip down the stairs Sad...)

Anyway, let me know if there's anything specific about the dev process you'd like me to write about. For now I'm just going to give some background info about what's involved and how it all works together.



Web-apps are hard, let's go shopping

I started building CraftStudio as a Web app back in August. It made a lot of sense to avoid having people download & install an app. It would have spared me the effort of creating an update system, too.


The now-defunct Web version of CraftStudio

It used WebSockets (through the pretty awesome SocketStream library) & WebGL. But I came to the realization that it was just too much work for a very uncertain result: WebSockets are TCP-only (which implies latency issues), WebGL was (and still is for the most part) pretty experimental, and building a complicated app UI on the Web is a PITA. Finally, allowing people to host their own projects seemed pretty complicated, and the server costs involved with hosting everyone's projects sounded a little... overwhelming :D.

Switching to a desktop app

I started full-time work on CraftStudio around mid-September. Having put many hours in the initial Web version, I agonized for quite some time over the decision of switching to an actual desktop app Addicted.

Previously I had been working with XNA on another game (QuadSmash) and had just started an UI framework as part of Nuclear Winter, a bunch of libraries that I've released as open source (just be aware that documentation is lacking as of right now).

I gave it some more thought and decided to go with it, knowing that XNA is commonly used to make PC / Xbox 360 / WP7 games, but not that many apps. It turned out to be a pretty good fit, except for keyboard text input & resizable windows, problems I have now managed to overcome by taping into some native stuff to override XNA behaviors.

Porting to Linux and Mac

XNA on the desktop PC is Windows-only, since it's built on .NET and DirectX. Happily, there are multiple initiatives to rewrite XNA on Mono and OpenGL.

Both MonoGame and ExEn are pretty far advanced for 2D games on various platforms but 3D still has some ways to go.

In the mean time, I managed to run the launcher of CraftStudio using Wine and Mono dev versions under Linux, but it crashes when trying to update. There's a bug report on Wine about this particular issue and I think it should be fixed pretty soon. Hopefully some level of support through Wine for Linux & Mac isn't very far off.

(I'll give some info about how networking is handled in the next post)
Logged

Mvpires
Level 0
**



View Profile
« Reply #5 on: November 25, 2011, 06:55:40 AM »

This looks really AWESOME!
Logged
elisee
Level 1
*



View Profile WWW
« Reply #6 on: November 26, 2011, 04:14:26 AM »

I'm readying up for pushing a new update this week-end, adding support for so-called asset revisions.

Assets are models, maps, scenes, documents or scripts... All this stuff you create, you should never loose it! Asset revisions allow to check point them so that you can later restore an old revision.

I expect most people to use CraftStudio projects with a white-list of users who can join, but for those who will make public game / movie projects, having the ability to create revisions will be very instrumental in reverting any kind of griefing.

The update will also add support for creating documents. It's pretty much like a real-time wiki. I think this will be particularly useful for people who want to make games with people they don't know in real-life. I don't believe in big fat game design documents but being able to lay down a few notes here and there should be a great addition.


And now for some info about CraftStudio's architecture!



CraftStudio uses the Lidgren network library for all its network needs. Basically it's a very complete, portable library, built over UDP. It handles everything you could dream of (message channels, discovery, encryption, reliability, ...) and is pretty simple to use. Highly recommended.

CraftStudio is actually made of 5 sub-projects:

  • The Master Server - it runs on craftstud.io, handles authentication, serves client updates and news (from an SQLite database)
  • The Installer - basically installs the Launcher and ensures you have all the dependencies. It's built with WiX XNA (some more info).
  • The Launcher - a small program to input your credentials and fetch the latest client from the Master Server. On Windows, the client files are stored in $USER/AppData/Roaming/CraftStudio. This allows to sidestep any permission issues which might arise from using Program Files. Both Google Chrome and Minecraft act similarly.
  • The Client - well, this is the main thing! It talks to everyone and displays pretty things.
  • The Server - which you can run on your own computer to start one or more projects. It handles all the commands from the client and keeps everyone in sync.


Once the launcher has checked for a new version, it starts the client and closes itself.

The client reopens a connection to the master server, authenticate itself and fetches the news. Later on, I plan on making it fetch account info like points (probably for a global achievement system or something), type (paid account or not), games one has added / bought, and maybe even your projects list (right now it's only stored locally).

A server can serve multiple projects. Projects all have a UUID and are stored as directories under Projects in the server's directory.


When the client connects to a server, it announces which protocol version it supports (a simple integer which is incremented everytime I make a breaking change in the protocol), and the server returns an error if they don't match. Protocol versions are separate from client / server versions so that I can release new versions of the client which don't require a new server (and vice-versa).

Ok, I'm back to work on document editing Smiley. See you guys later!
« Last Edit: November 26, 2011, 10:48:03 AM by elisee » Logged

J. R. Hill
Level 10
*****

hi


View Profile WWW
« Reply #7 on: November 26, 2011, 09:56:21 AM »

Super useful - thanks!
Logged

hi
kamac
Level 10
*****


Notoriously edits his posts


View Profile
« Reply #8 on: November 26, 2011, 02:00:03 PM »

It looks outstanding.

I wonder how big customizeability does the games made in it have.


And my main & loved question: What language do you use & graphics engine?  Smiley
Logged

elisee
Level 1
*



View Profile WWW
« Reply #9 on: November 26, 2011, 02:11:32 PM »

It looks outstanding.

I wonder how big customizeability does the games made in it have.

Thanks!

Once scripting is in place, people will be able to make pretty much any kind of game. A friend and I have a project to make a 4-players Zelda-like at some point for instance (here are some artworks my friend made. Of course the actual game will look much more retro)

And my main & loved question: What language do you use & graphics engine?  Smiley

I'm building CraftStudio in C# using XNA. The UI is made using my NuclearWinter library set and as stated in my previous post, I use Lidgren for networking.
Logged

kamac
Level 10
*****


Notoriously edits his posts


View Profile
« Reply #10 on: November 28, 2011, 01:34:57 PM »

I've just tested your project.

It's awesome. Don't waste your talent. Making something outstanding  Smiley
Logged

elisee
Level 1
*



View Profile WWW
« Reply #11 on: November 30, 2011, 08:10:45 PM »

Thanks for the kind words!



I just released a new pre-alpha build (0.0.8.0), last one was 2-3 weeks ago. This update features collaborative document editing and an asset revision system (to do backup & restore old versions). I'll write in more details about all the work that went into this tomorrow, I need some sleep right now.

If you have already grabbed CraftStudio, just start it up and it will automatically update. (Alternatively, download CraftStudio here!)
Logged

elisee
Level 1
*



View Profile WWW
« Reply #12 on: December 02, 2011, 07:07:15 AM »

Hi there!

So for the past week I've been working on collaborative document editing and it's now available.

Making changes to a document at the same time as other people sounds like a nice thing to do, but what happens under the hood is actually pretty complicated. Let me explain!

As you may know, network communications are far from instant, the data takes time to reach the server and come back to the client. (This delay is called the round-trip time or "ping").

The client makes changes to the document as you type, and sends them to the server, which will dispatch them to everyone currently watching to the document. The change will be a simple packet containing its location in the document, and what kind of change happened (inserting a character, removing one, etc.)

But what happens if two people make changes at the same time?

Well the server will receive one of them first, will apply it, and notify everyone. Then it will receive the second one (which was crafted and sent before the first one was applied!) and will try to apply it.

But hold on, the change is not valid anymore! It is based on the previous document state. As such, it must be "rebased" on the new document state. This is called "operational transform" and guess what, it's a whole field of research! Let's here a tale of two people editing a document:



Player A and Player B are writing a story together. Their (very short) story currently goes as following:

 Bob was walking down the street

(Let's call this document state "state 123".)

Player A wants to change "Bob" to "Jim". She starts by erasing the last letter of Bob:

 Bo was walking down the street

This generates a change which can be described as such (indices start at 0):

 Remove character at index 2

At the exact same time, Player B wants to start a new sentence. She starts by adding a full stop at the end of the document:

 Bob was walking down the street.

Her change is encoded as:

 Insert character "." at index 31

Both players send their changes to the server, so that it updates the document.

Meanwhile, the server is happily sitting when suddenly it receives a message from Player A!  The message says:

 Based on document state 123, remove character at index 2

Without even a hint of hesitation, the server complies and updates its copy of the document, calling it "state 124" and broadcasts the change to everyone. Having done a good job, the server wants to sit back and have a cookie, but another message comes, this time from Player B. Reluctantly, the server opens it. It reads:

 Based on document state 123, insert character "." at index 31

"This is old news!", comments the server, "State 123 is so yesterday!"

(At this point, I should probably point out that the server didn't sleep well and is in kind of in a bad mood.)

The server looks at the changes between state 123 and state 124, and realize that he has to adjust the newer change. Its magic rule book says the following:

 When an insertion happens after a deletion located before it, the insertion should move back by one character

"So, let's see", mumbles the server as it looks at the changes.

 Insert character "." at index 31 30

"Yeah, that should do it!". And just like that, document state 125 is created! The server broadcasts the new change and everyone is happy, ever after.



That should give a basic idea of what's involved with Operational Transform and real-time concurrent editing. There's a lot more to it, of course, and if you're interested, you should check out the OT faq which is a good reference on the subject.

Now that I'm done with documents, the next major CraftStudio update will add scenes & scripting! Exciting stuff... stay tuned!
« Last Edit: December 02, 2011, 09:06:35 AM by elisee » Logged

Endurion
Level 2
**



View Profile WWW
« Reply #13 on: December 02, 2011, 12:20:56 PM »

Wanted to take a look but the web site fails to display the descriptions for the fields I'm supposed to enter. It's easy for login, but for creating an account there are four fields. You might want to look into that.
Using XP with IE 8. Do NOT tell me to use a different browser.

From the looks this looks quite nice. A multi "player" approach might spawn interesting results.
Logged
elisee
Level 1
*



View Profile WWW
« Reply #14 on: December 02, 2011, 12:41:31 PM »

Wanted to take a look but the web site fails to display the descriptions for the fields I'm supposed to enter. It's easy for login, but for creating an account there are four fields. You might want to look into that.
Using XP with IE 8. Do NOT tell me to use a different browser.

From the looks this looks quite nice. A multi "player" approach might spawn interesting results.

Hey!

Sorry about that, I didn't spend much time on the website yet and haven't tested it under IE. You can imagine I've had enough to do with the tool itself Grin

You're welcome to use any browsers you want but currently I can only say for sure that it works under Chrome & Firefox (probably Opera too). The text is displayed as an <input placeholder> and I guess IE8 doesn't support it. Basically the first field is login, then password (twice) and e-mail.

Hope to see you soon on the public test server!
« Last Edit: December 02, 2011, 01:06:56 PM by elisee » Logged

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #15 on: December 02, 2011, 05:05:50 PM »

Just tried it out right now as well. You've got a very unique idea, and I would really like to see it blossom. Keep going, man. Keep GOING!
Logged

elisee
Level 1
*



View Profile WWW
« Reply #16 on: December 04, 2011, 07:23:21 AM »

SolarLune: Thank you! I'll keep at it Smiley



So Cassandra Khaw from IndieGames.com ran a post about CraftStudio, and signups have been pouring in ever since then.

CraftStudio had 140 registered users by Friday night before the post happened, it had doubled a few hours later and as of right now, it's up to 832 people registered! Crazy

I didn't sleep much Friday night, trying to welcome and handle all the newcomers on the server. Luckily, a few people helped out. A big thank you to everyone who gave their time so I could fix issues.

This is both amazing and a bit overwhelming. I'm glad I spent time testing and fixing a lot of bugs a few days before this, it could have been a disaster if it had happened at the wrong time. There has been a bunch of crashes & other issues but overall it went pretty well.

I really hope I don't get too much publicity before I can implement scripting because some people come with very high hopes and well, it's just not there yet. (Anyone with more than 10000 of followers or viewers, if you were to consider talking about CraftStudio, please hold on a few weeks before pointing your people at my poor little server. I AM SO NOT READY. Thank you Wink)

I have yet to manage to get the server to stay up a full night without having to restart it in the morning, but it's been much more stable lately. Basically when I woke up today, the server was sending invalid messages to clients, making them crash. I'm working on ensuring the client handles this more gracefully and obviously having the server not send invalid messages.

I added a welcome message on the server so people have some help even when I'm not around, but most people will just click around when they get on the server rather than read 3 lines of text. It's a good thing I implemented the revision system otherwise the (sometimes unintentional) griefing would have been very hard to cope with.



A wiki has been started too, if anyone wants to help out, you're welcome to improve it! http://craftstudio.wikia.com/

Ok I'm back to fixing stuff and then I'll get started on scenes. See you guys on the server!
« Last Edit: December 04, 2011, 07:30:26 AM by elisee » Logged

xot
Level 0
**



View Profile WWW
« Reply #17 on: December 06, 2011, 01:49:12 PM »

If I understand things correctly, this can not be used without an active internet connection?
Logged

increpare
Guest
« Reply #18 on: December 06, 2011, 01:50:32 PM »

Impressed with how stable this is so far.  I'll be keeping tabs on this Smiley
Logged
elisee
Level 1
*



View Profile WWW
« Reply #19 on: December 06, 2011, 02:23:49 PM »

If I understand things correctly, this can not be used without an active internet connection?

Yes, it can. The launcher checks for updates with the master server and won't start if it can't reach it but you can bypass it (after the first client download) by starting the client directly from [User folder]\AppData\Roaming\CraftStudio\ClientApp\CraftStudio.exe. I should add a way to bypass updates in the launcher, but haven't had time yet.

You can then start a local server (instructions here) and use it without any Internet connection.

Impressed with how stable this is so far.  I'll be keeping tabs on this Smiley

Thanks. I've been fixing bugs all week-end thanks to the many many signups from IndieGames.com, so the stability is pretty good now indeed.

Oh and I just stumbled upon http://www.bfxr.net/. I would love to build something like that in CraftStudio. Although sfxr a great tool, it kinda make all games sound the same. Bxfr looks like a great improvement. I'll check it out in more details when I get to sound stuff. Thanks for making it Smiley
Logged

Pages: [1] 2 3 ... 10
Print
Jump to:  

Theme orange-lt created by panic