Question - General Guidelines For Asset Developers and Vendors

icuurd12b42

TMC Founder
GMC Elder
I was asked to describe and provide tips based on my experience in making assets for game maker studio by another user today. Since this is like the nth time people have enquired I decided to post my response publicly...


Creating an Asset
Making an asset for game maker studio can be quite the endeavor and as a developer of such asset you have to be very conscious of the implications...

Making an asset is not the same as making a game! You provide features that are missing from the language or to simplify concepts for other people and as such you have to be very careful because if your stuff breaks, it's the user's game that breaks! (Unless the problem is Yoyo's which happens on occasion)

Since your code merges with the other person's project there are things you should do to minimize the impact of managing your asset inside the project and also minimize the learning curve for using the asset....

And so, I have a set of rules that I try to follow meticulously


Rules for your asset creation and distribution

All my assets are GML based and the code accessible, in the clear, to the user and become part of the user's project upon merging...

1) For each resource your asset uses, create a Group/Folder with the same name as your asset so that when the user merges your asset in the project, your stuff is separate from his, so that if he decides to get rid of your stuff he can delete the groups easily.

2) Keep your Demo resources in a Demo group/folder under the groups you created in item 1) so that when the time comes the user feels he no longer needs the demo stuff he can delete the demo folders easily

3) Keep the features the user needs in the asset folders mentioned in 1) or in a distinctively named sub folder

4) Keep the internal functions or resources your system needs (but the user never uses directly) in a sub folder appropriately named

this snapshot shows the structure that respects those 4 rules
upload_2017-6-23_14-21-54.png


5) Properly document your asset in the function comments and make references to related functions (See Also) in every function. Middle clicking on a referenced function, even if it's in a comment, pops up that function in a new code editor so the user can read that function's comments... This basically means you have a navigable document inside the actual code so you don't need to make an external help reference manual

6) Have a readme script, consider it the start of the navigable document

This snapshot shows the document in comments along with having navigated through via middle click
upload_2017-6-23_14-27-28.png


7) Have an init script to setup all you globals your asset needs. DO NOT create globals on the fly

8) prefix EVERYTHING! As annoying as it will be to you or the user of your assets to have to type the prefix: tmc_lux_init(), tmc_lux_add_light(), instance_create(x, y, tmc_lux_demo_light)... it will be way worse having your resource name collide with an existing name in the project! this applies to all your resources and global variables, and to a lesser extent instance variables in parentable objects you provide.

9) Use "var" to define variables used locally by your scripts

This snapshot illustrates those rules
upload_2017-6-23_14-37-57.png


10) Style/Indent your code properly. This is especially true for the code in your demo objects since basically this is where the user will try to figure out how your asset works... but this should also apply to your functions/script... Nobody likes a sloppy programmer. Remember this code is public... Maybe you like to walk around in dirty underpants in your home but when you go out you dress up! The same applies to your code!


I use the Allman Style but it can be any style you like as long as it's the Allman's Style! Kidding, just use one of the industry standards listed here...
https://en.wikipedia.org/wiki/Indent_style#Allman_style

11) Include a showcase demo as it is usually a good way to demonstrate your asset capabilities but more often than none a showcase demo is written to be more pleasing to navigate through the features than showing how it works. The resulting code of a showcase demo is usually a mess of code written in such a way that the user has to dig for hours through irrelevant or dissociated code...

12) ... So include demo rooms and example objects with your asset that clearly demonstrates how to use the asset clearly. And please STICK to showing how your asset works in simple example use if possible!

13) Provide a Support forum, you can do it here on the yoyo community forum and try to answer support questions publicly. Having a public forum means your users can help each other out and reduce your support cost

14) Test your asset on every output you own and fix every issue that come up right away. if you cannot fix an issue for a platform, clearly state what the issue is for that platform and try to provide a work around. If the asset cannot run on a specific platform make that clear in the description on the marketplace. It's likely not possible that you will be able to test on every platform, but in general if your asset is GML based and not platform specific and works on 2 platforms (say windows and android or iOS and HTML5) , it should work everywhere.


GMS:2 or GMS:1?

With the release of gms:2 I've had a lot of requests to migrate my assets to the new platform... this is simply not realistic! Simple reason being that a lot of people still use gms:1, this would require I split off another branch of each asset on the store, doubling the number of assets and doubling the work for every time I fix a bug!

As of now the import of a gms:1 asset to a gms:2 project is very well supported! The comments are well enough supported and the cost of the compatibility scripts that yoyo includes in the project for backward support is insignificant compared to the complexity publishers would face.

There are a few exceptions but as long as you made sure your gms:1 asset works in gms:2 there should not be any issues. So for now, I do recommend you make your assets in gms:1


Packaging and Publishing the Asset

I will only supplement the information documented here
https://www.yoyogames.com/blog/55/how-to-make-a-marketplace-ready-package-using-early

After having created a Publisher account, having gotten your key and setup you end on the Studio UI side...

Log in (Using an External browser) to the Publisher Store
upload_2017-6-23_15-13-35.png


Which is listed under Publishers

Click the Asset Menu on the left then the Create Asset button on the right

In the web Form, fill out the information. You better have prepared some screenshots and a youtube video at that point.

In the Web Form, setup your price, set a reasonable "regular" price and make use the "Sales" price field. You cannot play with the regular price in a flexible way, the system will lock the price for a time period so if you make a mistake and you don't notice it on time you won't be able to fix it until the lock period has expired! So use the sales price box if you are not certain of the right price range, set the regular price to allow some flexibility for the sales price. And don't sell yourself short, that does not help anyone!

Complete the form!


Return to the Game Maker Interface and create the asset by clicking the Marketplace Beta Menu and then the Package Manager Menu.

Click the Create New Asset Package Button. This will present a screen similar to the Create Extension option (If you don't know, it's when you right click the Extensions in the Resource Tree and select the Create Extension menu).

Fill up the form with the content that matches what you entered in the Publishing Web Form. Follow the instruction and upload the asset to the store (the asset will be in the list with a upload button next to it)

With a few variation here and there, the same steps are required when you add a new version. I will let you figure that one out. Just be cautious to add to the version number and to make sure to publish the new version once you receive the email from yoyo that your version is ready to publish


Tips on Pricing the asset

If your point of making an asset is to give out your code, you don't need to read this but it would help if you did. Some people are fervent believers in open free source, especially when they have a secure income so they don't need the extra cash, and donate their time to help people out. It's fun, nothing wrong with that, but be considerate, this is a niche market and therefore you should act with consideration when you put out free stuff.

For me, my need was to have some money so that I could keep helping out the community. Many of you know I'm retired and I ain't rich, in fact I'm barely making my ends meet.. So I need some extra cash just to keep my internet up and to upkeep my PC. So when YoYoGame came up with the idea of the asset store, it was like a little godsend...

It took a while to have enough assets people were interested in to provide a reasonable amount of sales per month. The amount of income is not substantial but enough to keep my PC running.


Understand The Buyer's Mentality

Not to offend anyone, long story short, people today have a hard time understanding the value of other people's work since most grew up in this mentality sphere where everything seems to be... or ought to be gratis...

Long story short, I found that the moment you put a price on an asset, be it 99c or 9.99$, the number of sales will be very little per month. It's better to have 3 10 dollar sales than 3 1 dollar sales. The moment you put a price on it most people simply don't want to pay for it, no matter how cheap it is. So better make the asset appealing for the few who are willing to pay. If you sell something for a buck It will take you months if not a year to get your account up to the 100$ yoyo payout. Not worth it, you might as well give it out for free.


Few tips as a Vendor

1) Provide an asset of considerable usefulness or considerable number of features as opposed to many assets that do very little so that you can

2) Charge enough so that each single sale is significant

3) Please don't give out amazing assets for free. It's really not helping, it gives the impression that people should be getting weeks of work from others for free

4) Please don't give out assets similar to other assets people are selling. You'll just end up stealing the 2-3 sales a month the other vender may have put blood, sweat and tears in creating.

5) If you do make an asset others are selling try to keep the price competitive, again if you sell for 1$ what others are selling for 10$. You'll just convert somebody's 20$ in sales to 2$ in your pocket. And since very little people buy assets that are prices, you will not get more sales than he was getting. You both lose.

6) Don't undersell yourself. This devalues everyone's worth!

Of course there are exceptions to this, I mean if someone is selling something at an unreasonable price per effort ratio, putting out something at a way lesser price or even free can be deemed just. But please don't do it just for spite...


How do I calculate what my asset is worth!?


The way I go about deciding the price of the asset is I keep tabs of how many hours I worked on the asset, I basically add, more or less, 50 cents for every hour I spent on the asset depending on my mood and also how much I struggled with it, I mean if I brain farted on something and chased a bug for 8 hours I'm not going to count that! Or if I write an asset in an hour because it's the 15th iteration of the idea and therefore I wrote it 10 times faster than the first time I thought of it... I compensate for that.

I also factor in my level of competence, I've been a programmer since I was a little lad, I'm 50 now and I've been programming in game maker since version 6! This experience makes me a more efficient programmer so when I say I setup my rate to 50 cents an hour, that is for my self assessment... It would vary from individual to individual obviously.

I usually cap my price at around 10 to 15 bucks, but that cap varies according to how exceptional the asset is. You can be sure that LUX and Terrain Tile have more than 60 hours of work put in them! But I'm not going to go and charge 200$ for LUX because I worked on it for 4-6 months. So the 50 cent per hour is just your starting point and the caps is the worthiness of the asset.



Conclusion (and mini-friendly rant)

Making assets is not easy, you struggle to have it perfect, you try your best to make sure it works for everyone, you try to make sure it's comprehensible and easy to use! There is a lot more work in making assets than simply typing code that does the same thing for your own use.

As a seller, be aware that the value of the asset is relative to the one interested in it! But the price is set by you and you should not undersell or oversell yourself!

As a buyer, be aware that the value you put on the asset depends on your own expertise, as much as a seller can under or over estimate his worth, so can you. You may think an asset is worth gold or is worthless...

If you think, heck that thing is not worth 10 bucks, I can make this in one hour. If that is the case then go write your own and count the time you spent on it... and factor in the extra work of documentation and testing...

If you put up the asset on the store to prove a point... you better also put in the extra work of documentation and testing...

Making assets for game developers is not the same as making a game for mass consumption or toying around with a concept for your own personal intellectual enjoyment. These assets are very specialised and made for a niche market (especially the priced ones), made for people who need it and either don't have the time or the skills to make it. It be free or not, consider the work put behind them, we asset makers take pride in what we do and work pretty darn hard at making sure we do it right, and yes even for the silly easy stuff :)


I hope this help!

Take care and have fun!

NOTE:
Admins, not sure if this belongs here. I think it should
 

Attachments

Last edited:
G

Guest User

Guest
This should be pinned, it's pretty useful and really well written/formatted :3
I second that, I was looking for an article similar to this and couldn't help but post another topic with a similar question that got perfectly answered here.
 
Top