Jump to content


Photo

Clockwork - Free Online Highscores and Stats


  • Please log in to reply
199 replies to this topic

#1 Jub Jub

Jub Jub

    GMC Member

  • GMC Member
  • 15 posts

Posted 06 November 2010 - 10:47 PM

If you're still using Clockwork, please read this.

 

CLOCKWORK

Free Online Highscores and Stats


>>>madewithclockwork.com<<<



How many people are playing your game right now? Ever wanted online highscores?
Add internet functionality to your game with Clockwork!

Features:
- Online Highscores
----- Access in game
----- Embed on your website
- Automatic and Custom Statistics
- Fancy Graphs
- MD5 Encryption, to keep teh hax0rz out

Requirements:
- Game Maker 8 Pro
- Basic Knowledge of GML

NEWS
We are actively working on Clockwork 2.0. You can look at the progress and the remaining tasks to be completed here:

https://trello.com/b...aae7a58073881c0

NEED HELP? - check out the help files. Or email or PM me, and I'll try to be helpful. Or post in this thread.

FOUND A BUG? - it would be awesome if you reported it by emailing me at robert_REMOVETHIS_@madewithclockwork.com, or you can just PM me.


GOT AN AWESOME IDEA? - PM me!

Thanks for choosing Clockwork!

>>http://www.madewithclockwork.com

 


Edited by Jub Jub, 08 January 2014 - 04:39 AM.

  • 0

#2 Docopoper

Docopoper

    You are observant!

  • GMC Member
  • 1287 posts
  • Version:GM:Studio

Posted 06 November 2010 - 11:23 PM

Yay! it's up!

I have a suggestion, not a high priority one, but to include some kind of variable protection system that you get with clockwork, so you can stop people memory editing your high scores.
  • 0

#3 G.I.L.

G.I.L.

    GMC Member

  • New Member
  • 64 posts

Posted 07 November 2010 - 03:37 AM

Yes! Its finally here! The website design is great and I like that you've improved the security. Now onto making some games!!!
  • 0

#4 Jub Jub

Jub Jub

    GMC Member

  • GMC Member
  • 15 posts

Posted 07 November 2010 - 02:43 PM

Yay! it's up!

I have a suggestion, not a high priority one, but to include some kind of variable protection system that you get with clockwork, so you can stop people memory editing your high scores.


Good idea... I added it to the "considering" list. It would be difficult, but I think it is possible sometime in the future.

Yes! Its finally here! The website design is great and I like that you've improved the security. Now onto making some games!!!


Awesome, thanks! :)
  • 0

#5 norisak

norisak

    GMC Member

  • GMC Member
  • 131 posts
  • Version:GM8

Posted 07 November 2010 - 04:34 PM

It wont submit if I put characters like or ' or " or or ^. Can you make a script that filters away the characters that wont work so if someone gets a great score and they cant submit it :blink:
  • 0

#6 Jub Jub

Jub Jub

    GMC Member

  • GMC Member
  • 15 posts

Posted 07 November 2010 - 08:34 PM

It wont submit if I put characters like æ or ' or " or ø or ^. Can you make a script that filters away the characters that wont work so if someone gets a great score and they cant submit it :blink:


Good point! Here is a script which will filter a player's name of bad characters, and return the cleaned string:


/***************************************************
  cw_highscore_name_clean(str)
 
  DESCRIPTION:
  Cleans a player's name of strange symbols, for submitting to Clockwork.
 
  ARGUMENTS:
  str - the string to be cleaned
  
  RETURNS: The string, cleaned
 ***************************************************/
{
    cw_temp_i = 0;
    cw_temp_string = "";
    while (cw_temp_i < string_length(argument0))
    {
        cw_temp_i += 1;
        cw_temp_currentchar = ord(string_char_at(argument0,cw_temp_i));
        if ( (cw_temp_currentchar >= 48 and cw_temp_currentchar <= 57) or (cw_temp_currentchar >= 65 and cw_temp_currentchar <= 90) or (cw_temp_currentchar >= 97 and cw_temp_currentchar <= 122) )
        {
            cw_temp_string = cw_temp_string + chr(cw_temp_currentchar);
        }
    }
    
    return cw_temp_string;
}


I will also put this script into the example code when I push out the next SDK update.

Thanks for pointing that out to me!

-Robert

Edited by Jub Jub, 07 November 2010 - 08:37 PM.

  • 0

#7 norisak

norisak

    GMC Member

  • GMC Member
  • 131 posts
  • Version:GM8

Posted 09 November 2010 - 07:45 PM

You should make so that you can delete a single score in the highscores, incase of hackers.
  • 0

#8 Jub Jub

Jub Jub

    GMC Member

  • GMC Member
  • 15 posts

Posted 11 November 2010 - 03:34 AM

You should make so that you can delete a single score in the highscores, incase of hackers.


Yes, that is on the to-do list. However, Clockwork has fairly good security, and I would say that the most likely way that hackers will add highscores is by decompiling your game.
  • 0

#9 Docopoper

Docopoper

    You are observant!

  • GMC Member
  • 1287 posts
  • Version:GM:Studio

Posted 11 November 2010 - 09:22 PM

or using Cheat Engine... it's really easy to cheat with it. and highscores are usually displayed as a numerical value on the screen, so you can just search for it's memory... far easier than intercepting the message to clockwork. that's why I suggested the protection thing.
  • 0

#10 Jub Jub

Jub Jub

    GMC Member

  • GMC Member
  • 15 posts

Posted 11 November 2010 - 10:38 PM

or using Cheat Engine... it's really easy to cheat with it. and highscores are usually displayed as a numerical value on the screen, so you can just search for it's memory... far easier than intercepting the message to clockwork. that's why I suggested the protection thing.


Check out this site: https://www.mochimed...-mochiads-games

It's some possible methods for protecting your games' scores and stuff. The methods are intended for flash, but they could be easily used with game maker as well.

-Robert
  • 0

#11 Gamechaser_net

Gamechaser_net

    GMC Member

  • New Member
  • 0 posts

Posted 12 November 2010 - 07:26 PM

I would love to use this, but after setting everything up, I get this error:

___________________________________________
ERROR in
action number 8
of Create Event
for object obj_player:

Error defining an external function.

I merged the games and in my obj_player under some other stuff that goes on when it is created put the code that you provide on your site. I filled it out with the correct info.
Help would be appreachated.
  • 0

#12 2DLuis

2DLuis

    Graphic Designer

  • GMC Member
  • 2524 posts
  • Version:GM8

Posted 12 November 2010 - 08:31 PM

Great web design.
  • 0

#13 Jub Jub

Jub Jub

    GMC Member

  • GMC Member
  • 15 posts

Posted 12 November 2010 - 08:56 PM

I would love to use this, but after setting everything up, I get this error:

___________________________________________
ERROR in
action number 8
of Create Event
for object obj_player:

Error defining an external function.

I merged the games and in my obj_player under some other stuff that goes on when it is created put the code that you provide on your site. I filled it out with the correct info.
Help would be appreachated.


Make sure that 39.dll is in the same folder as your game.


Great web design.


Thanks!

I also have a couple of bugs that I need to fix with the SDK which should be out in about 4 hours.

Edited by Jub Jub, 12 November 2010 - 08:57 PM.

  • 0

#14 Fenatti

Fenatti

    GMC Member

  • New Member
  • 5 posts

Posted 13 November 2010 - 09:05 AM

how to let players see the highscores?
http://www.madewithc...s/ID/highscores
they cant see it because they dont know the password

Edited by Fenatti, 13 November 2010 - 09:11 AM.

  • 0

#15 Jub Jub

Jub Jub

    GMC Member

  • GMC Member
  • 15 posts

Posted 13 November 2010 - 02:58 PM

how to let players see the highscores?
http://www.madewithc...s/ID/highscores
they cant see it because they dont know the password


You can access the highscores from in-game, and show it to the user that way. The clockwork help files explain how to do that at http://www.madewithclockwork.com/help

Hope that helps,

-Robert

EDIT: You can also embed them in your website.
EDIT 2: You can also now go to madewithclockwork.com/games/ID/highscores to see the highscores publicly.

Edited by Jub Jub, 27 January 2011 - 03:45 AM.

  • 0

#16 Fenatti

Fenatti

    GMC Member

  • New Member
  • 5 posts

Posted 13 November 2010 - 03:48 PM

Well, I tried that.

In script cw_highscore_get:
Error in code at line 15:
if (global.cw_active == 0) {exit;}
^
at position 17: Unknown variable cw_active


You know maybe whats wrong?
  • 0

#17 Jub Jub

Jub Jub

    GMC Member

  • GMC Member
  • 15 posts

Posted 13 November 2010 - 05:04 PM

Well, I tried that.

In script cw_highscore_get:
Error in code at line 15:
if (global.cw_active == 0) {exit;}
^
at position 17: Unknown variable cw_active


You know maybe whats wrong?


Did you call cw_start()?

This page explains how to start Clockwork: http://www.madewithc.../gettingstarted
  • 0

#18 jackyboyhenry

jackyboyhenry

    just jack

  • GMC Member
  • 466 posts

Posted 15 November 2010 - 04:13 PM

very pro looking site :)
  • 0

#19 Docopoper

Docopoper

    You are observant!

  • GMC Member
  • 1287 posts
  • Version:GM:Studio

Posted 16 November 2010 - 09:11 PM

Is there any way to trick clockwork int giving me level sharing? eg. through error reporting or statistics? (I don't really know how the error reporting works though)
  • 0

#20 Jub Jub

Jub Jub

    GMC Member

  • GMC Member
  • 15 posts

Posted 17 November 2010 - 03:26 AM

Is there any way to trick clockwork int giving me level sharing? eg. through error reporting or statistics? (I don't really know how the error reporting works though)


Error Reporting doesn't really work right now...

I also will be implementing level sharing sometime in the future...if you look at the first post, level sharing is in the "considering" list.

very pro looking site :)

Thanks!

Edited by Jub Jub, 17 November 2010 - 03:50 AM.

  • 0

#21 Docopoper

Docopoper

    You are observant!

  • GMC Member
  • 1287 posts
  • Version:GM:Studio

Posted 17 November 2010 - 03:22 PM

I know, ok - i'l build other parts of my project now:

The format that would be best would be:

1) an id - so you can for-loop levels into memory. Make the id automatically put onto the end.

2) a name - allowing you to search for a level by name.

3) a big heaping pile of binary code, guess what this is.

4) Tags: you should be able to add tags to the functions that find levels, and levels that have none of these tags are ignored.

Is the main problem the amount of space a level would take up on the server? or is it just technical difficulty. (I will optimise the storage anyway - you could even make it so that people need to PM you to use it, and send you their format if space is the issue)
  • 0

#22 Jub Jub

Jub Jub

    GMC Member

  • GMC Member
  • 15 posts

Posted 17 November 2010 - 06:11 PM

I know, ok - i'l build other parts of my project now:

The format that would be best would be:

1) an id - so you can for-loop levels into memory. Make the id automatically put onto the end.

2) a name - allowing you to search for a level by name.

3) a big heaping pile of binary code, guess what this is.

4) Tags: you should be able to add tags to the functions that find levels, and levels that have none of these tags are ignored.

Is the main problem the amount of space a level would take up on the server? or is it just technical difficulty. (I will optimise the storage anyway - you could even make it so that people need to PM you to use it, and send you their format if space is the issue)


A bit of technical difficulties. Right now all the data is being sent in the URL, and that is limited in the number of characters that can be submitted. I think that I will have level data be submitted via the header request, rather than the url, so that more information can be put in the request.

I will definitely implement tags. I also want to put in tags for highscores as well.

I probably will also implement a voting/flagging system, so that you can determine the best and the worst, and also find ones which are offensive.

Here is a question for you game developers out there: how big are your level files?
  • 0

#23 CES

CES

    GMC Member

  • GMC Member
  • 27 posts

Posted 17 November 2010 - 06:35 PM

Nice layout and site design but it looks so easy to hack and DDOS. Can i recommend a CAPCHA feature you add because with abit of work someone could create 1000+ accounts and submit 100000000000000 highscores slowing your service to a stop.

Just a few ideas i might go and test :)
  • 0

#24 Docopoper

Docopoper

    You are observant!

  • GMC Member
  • 1287 posts
  • Version:GM:Studio

Posted 17 November 2010 - 06:44 PM

I have not designed the format: but I a actually want to put models up (I'm making a sort of model editor). The format will most likely go like this:

<header - undecided but small>

XXYYZZNXNYNZPPPPTXTXCLALB (25bytes)

that sort of number with a little extra for each vert, maybe 300 verts (roughly 7500 bytes and a header)

cant realy be much less, I'm using shorts, and that's the least I can realisticaly.

Edited by Docopop.co.uk, 17 November 2010 - 06:47 PM.

  • 0

#25 Jub Jub

Jub Jub

    GMC Member

  • GMC Member
  • 15 posts

Posted 17 November 2010 - 07:09 PM

Nice layout and site design but it looks so easy to hack and DDOS. Can i recommend a CAPCHA feature you add because with abit of work someone could create 1000+ accounts and submit 100000000000000 highscores slowing your service to a stop.

Just a few ideas i might go and test :)


In terms of hacking, I'm pretty sure that it is difficult. I use md5 digests along with a secret password unique to each game to encrypt both a token that only works once, along with all the other data. When I add level sharing, the md5 of the level will also be verified, so that you can't intercept a clockwork request in transit and change the level.

It would be easier just to decomplile the game, or memory-edit it. I posted an article about how to prevent memory editing earlier in this thread, and there is an anti-decompliler that someone else made which can help.

But hey, I'm not perfect at all, and there might be an exploit somewhere in clockwork. Feel free to PM me if you find one.


On the topic of DDOSing, ANY site can be DDOSed, and it is basically impossible to set up safeguards against it. Perhaps you are talking about DOSing, from one computer, which is fairly easy to detect.

If people start mass-registering accounts, I will add a CAPTCHA, but right now I'm trying to work on other portions of the site.


I have not designed the format: but I a actually want to put models up (I'm making a sort of model editor). The format will most likely go like this:

<header - undecided but small>

XXYYZZNXNYNZPPPPTXTXCLALB (25bytes)

that sort of number with a little extra for each vert, maybe 300 verts (roughly 7500 bytes and a header)

cant realy be much less, I'm using shorts, and that's the least I can realisticaly.


That's not too much. I might do something like 80 kilobytes max per file, would that work? Perhaps I would increase it on a case-by-case basis.

-Robert

Edited by Jub Jub, 17 November 2010 - 07:10 PM.

  • 0

#26 Docopoper

Docopoper

    You are observant!

  • GMC Member
  • 1287 posts
  • Version:GM:Studio

Posted 17 November 2010 - 08:20 PM

that's good, so I could use much more precision and verts, yay!


if I use:


XXXXYYYYZZZZNXNXNYNYNZNZPPPPTTCLAB (34 bytes)


I can get 2323 verts and a 1kb header! (not that I'l need a 1kb header)
  • 0

#27 Jub Jub

Jub Jub

    GMC Member

  • GMC Member
  • 15 posts

Posted 24 November 2010 - 03:11 AM

Clockwork just got updated. Here is a rundown of the new changes:

- Added embedding functionality, so you can embed your games on your website.
- Added the ability to delete highscores, as well as view the timestamp of the highscores.

Additionally, I switched from mysql to mysqli, so everything should run a bit faster. Sorry about the long waits during the games, but I am on a shared server (due to budget limitations), which is sluggish at times. Additionally, the servers are in texas, so you international users will have an ever more difficult time accessing the servers.
To combat the speed issues, I will eventually write my own DLL, so that the stats and highscores are sent in the background, without pausing the game. This will also allow you to add loading animations for highscore tables.

Also, if you notice some more stuff around the site about highscore "tags", ignore them. Soon, you will be able to give each highscore a set of tags, and then only load highscores with a specific tag. This allows you to easily have different highscores for each level.

If you experience any bugs or issues with the new update, send me a PM!

-Robert
  • 0

#28 A saurus1

A saurus1

    GMC Member

  • Sandbox Moderators
  • 1609 posts
  • Version:GM8.1

Posted 07 December 2010 - 05:18 PM

Please add tags soon.

BTW, this seems to be much faster and cleaner than the old GMH system. Good job (I'm using it for Neuculi now).

Question: Is there a page you can send players to to view the highscores online, not in the game itself? I know there was with GMH, but does Clockwork have anything like that?

Suggestion: Allow the designer to choose whether to display empty entries as 0s, or simply have cw_highscore_get() not return empty entries and instead return (from the function) either the number of entries it did retrieve, or substitute a custom message for the empty entries.

Edited by A saurus1, 07 December 2010 - 05:23 PM.

  • 0

#29 Docopoper

Docopoper

    You are observant!

  • GMC Member
  • 1287 posts
  • Version:GM:Studio

Posted 07 December 2010 - 05:31 PM

so, level sharing? what priority is it?

also - How much is hosting this costing you? (just curious)
  • 0

#30 Jub Jub

Jub Jub

    GMC Member

  • GMC Member
  • 15 posts

Posted 07 December 2010 - 07:51 PM

Please add tags soon.

BTW, this seems to be much faster and cleaner than the old GMH system. Good job (I'm using it for Neuculi now).

Question: Is there a page you can send players to to view the highscores online, not in the game itself? I know there was with GMH, but does Clockwork have anything like that?

Suggestion: Allow the designer to choose whether to display empty entries as 0s, or simply have cw_highscore_get() not return empty entries and instead return (from the function) either the number of entries it did retrieve, or substitute a custom message for the empty entries.

Tags actually are implemented already! You can find out more at http://wiki.madewith...rk.com/wiki/Tag.

There is also an undocumented function called cw_highscore_count() that returns the number of results in the most recent request. This function is also explained on the wiki.


so, level sharing? what priority is it?

also - How much is hosting this costing you? (just curious)


If you want me to develop a feature faster, give it votes on the idea forum. Level sharing currently has 0 votes.

About 7 USD a month for hosting, plus domain name costs.

~Robert

Edited by Jub Jub, 07 December 2010 - 07:52 PM.

  • 0




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users