Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - patrickgh3

Pages: 1 2 3 4 5 6 7 [8] 9 10 11 12
106
Your code would work in the 8.1 engines, but not the studio engines, which I assume you're using. For some reason changing the player's image_xscale in studio messes up the physics. So instead, the engines store that xscale variable somewhere else, and manually draw the player with that xscale. In Yoyo's engine the variable is "player.xScale", and in previous versions it was "global.player_xscale". So yeah, your first attempt is the right idea, just use the player's special xscale variable instead.

107
Gameplay & Discussion / Re: I wanna be the xenoglossia - where is it?
« on: February 20, 2016, 01:45:09 PM »
I happen to have Xenoglossia 1 and 2 for some reason.

-removed link-

108
Game Design / Re: YoSniper's Fangame Contest 2016
« on: February 16, 2016, 05:22:32 PM »
I don't object. Since there's not a huge number of entrants and it's a pretty casual event, I'd say it's best to be as inclusive as possible.

On the other hand, being so inclusive makes the event feel less cohesive and more arbitrary. It feels less like making a contest game alongside everyone, and more like seeing the games people would have made regardless of the contest. Having a shorter time frame would help a lot with this. But even though I would like to see the contest head in this direction, how it is now has its own benefits. It feels like an incubator rather than a jam, but being an incubator is just fine. I just personally prefer jams.

109
Here's how I would do make a camera object to do this using views: https://klazen.com/gm/07Q.

However, now I realize it might be simpler just to redraw the application surface flipped. So either do the solution above or the solution below, but not both obviously.

In Studio, add this snippet to a Draw GUI End event:
Code: [Select]
if global.mirror {
    draw_surface_ext(application_surface,800,0,-1,1,0,c_white,1)
}

110
Gameplay & Discussion / Download site help, etc.
« on: February 14, 2016, 04:52:17 PM »
I thought it'd be nice to gather these kind of explanations all in one place. Let me know if you have any additions to this list and I'll add them here.



Axfc

Axfc is confusing for everyone, not just you, don't worry. You might also consider enabling your ad blocker for it.

1. First, click this button.

2. On the next page, click this link.

I've noticed you'll occasionally be sent to this "unavailable" page. If you do, try again after waiting a while, or try incognito/private mode.

3. On the next page, click this link to start the download.

Note: If that last link doesn't work, there's a magical workaround called the herring trick. Replace the first word in the URL (some fish thing) with "herring", and try that.



Mediafire

Click this button when it's loaded. You might have to solve a captcha or watch a video ad beforehand. (consider enabling ad blocker)

Note: If the page gives you an error saying the download was blocked due to some music file or similar, try going back and then loading the page again a few times.



ux.getuploader
Scroll down and click this tiny Download button in the middle of the page.




pan.baidu

Click this button at the top. You might have to enter a captcha.




Error: Cannot read the game file


If you get this error message, it's because of the strange characters in the name. You have to rename the .exe AND ITS FOLDER and remove those strange characters.



Game crashes on Windows 8

See bmxbandit's fix for Windows 8 crashes

111
Game Design / Re: YoSniper's Fangame Contest 2016
« on: February 14, 2016, 02:37:52 PM »
Sweet, another contest! In addition to your goal of having people come up with more interesting fangame designs, your contests are also a motivator for people to make fangames in the first place. Sometimes you just need a prompt and a deadline to get the creative juices flowing. And it's fun as a community to have events like this going on, and of course to see how people's games turned out, even if you don't participate. So, thank you.

I'm still not a huge fan of the "include references to this specific thing in your game" rules, but I like how they make fun of themselves this time. I might participate in this one, depending on how my other projects go. Oh and just to clarify, we can work in groups right?

112
Game Design / Re: How to save the kid's xscale?
« on: February 12, 2016, 02:04:31 PM »
I like to do this in my games as well. You'll need to modify the save file code to save and load an extra variable of whether the player's facing left or right.
Code: [Select]
Save script
/*save player x, y, room, etc */
file_bin_write_real(player.image_xscale+1)


Load Script
/* create player, load x, y, etc */
player.image_xscale = file_bin_read_real(file)-1

Simple enough. Be sure you add those lines in the same position relative to the other read and write functions. For simplicity it's probably best to add them at the end, after all the other reads / writes. And of course they belong before the file_bin_close lines; use common sense!

But wait, what are those mysterious "+1" and "-1"s doing there? Well, the player's xscale is going to be either 1 or -1, and the file_bin functions only write and read positive numbers. So, we add 1 so that the number we save is either 0 or 2, and when we load it we subtract back that 1.

So yeah, it's pretty simple to save extra stuff in save files. But xscale can be tricky because of that negative thing.

Edit: get rekt Kyir

113
Game Design / Tutorial: Version update detection using Delfruit
« on: February 12, 2016, 12:36:17 AM »
Hi all. In a recent Delicious Fruit update, Klazen recently added some neat features, and I'd like to show people how to use them to make your game check if a new version is available when it starts up.

This tutorial is kinda long and involved because what we're doing is kinda complicated, and I tried to provide a lot of detail. Once you know how the process works, actually implementing it for your game should be pretty quick.

A. Adding a version attribute to your game's Delfruit page

First, before you upload your game to the wiki, create a Delfruit page for your game. You probably only want to do this when you're about to release. Make sure the name you type matches the name you will type when you upload to the wiki.

Next, claim your game's Delfruit page. Log in and click "report" on your game's page, and mention that you are the creator, and that this is a new game. Then you'll have to wait for the admin team to approve your request. This might take a little while since the admins aren't adminning 24/7.

You can tell your request was approved if when you edit your review for your game, an additional "attribute system" text appears. These instructions tell you how to add an attribute, and the URL to then access it. Go ahead and add a version tag with some number, e.g. [attribute]version=1.0[/attribute], and click the button to update your review. Visit that attribute's URL in your browser, e.g. https://delicious-fruit.com/ratings/game_details.php?id=12243&attribute=version, and make sure "success" is true, and "version" is the number you set.

Delfruit automagically takes care of reading the attributes you've set and then serving them over a REST API. If you have access to your own server, you could do this yourself, like I've done for Jtool update checking. But having this readily-configurable on Delfruit is very convenient.

B. Accessing the version attribute from your game

These instructions assume you're using GM Studio, which has built-in networking stuff. I might later add resources to check out for 8.1. Consider this another nudge to switch to Studio if you're still using 8 for new projects.

First, let's send an HTTP request for our game's version. This snippet should be executed once at the start of your game. We'll save the id the function returns for later.
Code: [Select]
versionRequestId = -1
if os_is_network_connected() {
    versionRequestId = https_get('blahblahblah?id=12345&attribute=version')
}

This is an asynchronous request, which means we don't get the response right away when this line executes. Create an HTTP event (under the Asynchronous group). This is where we receive the response to our request and deal with it accordingly. Put this snippet in there.

Code: [Select]
var result = ds_map_find_value(async_load, "result")
resultMap = json_decode(result)
if resultMap == -1 exit

var Id = ds_map_find_value(async_load, "id")
if Id == versionRequestId {
    var success = ds_map_find_value(resultMap, 'success')
    if is_undefined(success) exit
    if is_string(success) exit
    if not success exit
    var newestVersion = ds_map_find_value(resultMap, 'version')
    if is_undefined(newestVersion) exit
    newestVersion = string(newestVersion)
    if newestVersion == '' exit
   
    var thisVersion = '1.0'
    if newestVersion != thisVersion {
        if show_question('Theres a new version available. Visit the download page?') {
            url_open_full('https://www.google.com','_blank','')
        }
    }
}
ds_map_destroy(resultMap)

Let's analyze that snippet. In the first 3 lines, we store a ds_map of the response into the variable resultMap. From this ds_map we can access the version number and whatever else the response contains. Next, we grab the id of the response. We compare this to the id we saved earlier in the variable versionRequestId to check which response we're dealing with. Right now our game only sends one request ever, so this isn't really necessary, but it's good practice, since you could potentially have multiple requests in the future.

Inside the if-block, first we do a bunch of error-checking just in case. Then we grab the newest version and compare it to the game's version. If they're different, you know there's a newer version available, and we can prompt the player to visit the download page. The '_blank' target argument opens the page in a new tab. You should also consider using something other than GM's built in popups, for example creating a button on the title screen, since the built-in popups can feel kinda janky.

C. Managing versions

When you release a new version of your game, there are two things you need to do to keep update checking working correctly.
1. Update the version number variable inside the game.
2. Update the version attribute on your game's delfruit game to that same number.
Always remember to do both! It can be easy to forget one.

Something to note is that while the delfruit version attribute updates immediately, the download links on your game's wiki and delfruit pages do not. So if a player's game detects a new version, and you send them to your game's wiki or delfruit page, they could arrive before the download link has been updated. One solution is to upload your games to Mediafire, keep all uploaded versions in one folder, and have your game send players to the Mediafire folder instead since it's updated immediately. Another solution is to have another attribute on your delfruit page that is the newest download link, and the game grabs that and that's where the player is sent to. If you do that be sure you don't have a race condition issue.

Another note: The reason you create your game's delfruit page before uploading to the wiki is so that you can add the version attribute and put the URL into your game.

Another note: It's okay to release your game before the admins approve your request and you're able to add the version attribute on your delfruit page. You're not going to release an update within that timespan anyways. And the version checker code doesn't break if you haven't set the version attribute yet.

D. Checklists

First release your game:
1. Create delfruit page
2. Request to be that page's creator (don't have to wait for approval)
3. Copy delfruit version URL into the game's update check code
3a. If using Mediafire folder: create folder, copy folder URL into game code.
4. Test the case when version numbers are different
5. Test the case when version numbers are the same
6. Double-check game version number 1.0 or whatever it's supposed to be
7. Upload game
7a. If using Mediafire folder, put in that folder
8. Submit game to wiki, be sure it's the same title as delfruit page

Release an update:
1. Increment game's internal version number
2. Increment delfruit page version number
3. Upload game
3a. If using Mediafire folder, put in that folder
4. Possibly submit update to wiki*

*If you submitted your Mediafire folder to the wiki, the links for your wiki and delfruit pages don't need to be updated. But you might consider submitting that your game has an update if it's very important, like a lot more content or a balance overhaul.

Conclusion

I hope this tutorial makes it as easy as possible to add an update checker to your game, and that it'll encourage more people to do it. You don't have to give me credit for using this tutorial. After all, the real work was done by Klazen adding and maintaining these features in Delfruit! That said however, it's probably a good idea to mention in your game's readme that it connects to the internet to check for a new version, to let people know it's not doing anything malicious and to allow it.

If you have any questions, go ahead and ask, I'm happy to try and help. And if you have any feedback on the writing, for example if certain parts weren't clear, if something's incorrect, or if something's missing, I'd appreciate it. Enjoy! :)

114
Tools & Software / Re: Jtool - a new RMJ-type thing
« on: February 01, 2016, 02:29:47 AM »
I haven't touched Jtool (the source code, anyway) for 2 months, but the past few days I worked quite a bit on it and added a few new features, so here's version 1.2.0.

The download link is in the original post. Here's the change log:

--- 1.2.0   2/1/16 ---
Easier-to-parse map format
Rearrange depth of blocks, spikes, water
Easily erase objects beneath water
Killer / solid border map property
Check for new version on startup
Show filename in window caption
Include brown block skin
Fix rare map corruption bug
Lower death sound volume
A few misc tweaks
One new easter egg

115
Game Design / Re: Some Thoughts on Game Design
« on: January 31, 2016, 04:44:19 PM »
Great read. I like the way you frame game flow, mechanics, and atmosphere as all building on each other, and how it's important to keep that in mind. I often just go with the flow and design whatever feels right to me, but I think I'll benefit from explicitly sitting down and thinking about the big picture like that.

As for room layout, I tend to design jump-by-jump or movement-by-movement instead of following a planned path, which works for me, but to each their own. Overall your article is well-written and articulate, if a little bit lengthy, and is great advice. Definitely recommended reading; seeing how other people go about making games can give you valuable insight. Thanks for writing this Kyir.

116
This is neat! I personally haven't used ClickTeam Fusion, and I'll probably stick to GameMaker (same as most of our community), but I bet that in the future this will be useful for people who use CTF and become interested in making fangames. So, thanks for making making fangames more accessible! :)

I downloaded the free version of CTF to look at it, but it looks like I'm required to buy the full version to use the required INI++ and Window Control extensions. Judging by your feature list, it looks like it has pretty much everything I would expect. The main thing I wanted to check out though was the player physics, to see how accurate they are to the standard GM ones, which I think is the most important feature any non-GM engine could have.

117
Game Design / Re: RNG in avoidance. Doing it RIGHT.
« on: January 11, 2016, 01:05:09 PM »
I had this exact same idea a while back. In theory it seems like it would work, but I think the hard part is putting it into practice. Ideally your system would be easy to plug into any project, and it would be straightforward to use with as much automated as possible. It's hard to gauge how hard it would be to make a system like this.

Easy or hard to make, I think the main issue would be getting people to actually use it. People who make fangames often skimp out on QA towards the end of a project (myself included), and this idea, even though it would be useful, is essentially just more work to do for a gain that's not immediately apparent. I mentioned the idea to Klazen a while ago and he said something along the lines of this, and for the most part I agree with him.

Although if you feel motivated to make a system like this, I don't want to discourage you from making something you want to make. And if it turns out to be *super* easy to use, then who knows, it might gain traction.

As for Kyir's comments, I agree it's definitely worth thinking about other ways to achieve a similar effect of less variance in difficulty, including the ones he mentioned. Though you shouldn't worry about making a *perfect* avoidance attack, because there are multiple schools of thought on what makes a good avoidance and you can't please everyone.

118
I thought it would be nice to have a link to give to newcomers interested in the community that explains what we're about, has some useful links, and other information. So I made one!

The URL is fangam.es/intro. Everyone can post this link in Twitch chats if people ask, put it in your channel description, or whatever you want. And if a fangame gets into a future GDQ event, I think this would be especially useful. Please take a look at it, and please let me know if you have any suggestions. :)

119
Hi Smartkin. One piece of advice that's often repeated to beginner hobbyist game developers is to start small. Finishing one or a few small games lets you get comfortable with your skills before attempting a bigger game. If you start off with a big game, or your dream game, you run a big risk of getting in over your head and ultimately not finishing it, which is a bummer. In addition, the skill you gain from making a few small games will make your big / dream game be better quality. So, I stand by that advice, especially since you say you just started. This might mean putting this game on hold and making a smaller fangame first, or maybe cutting down the scope of this game; I don't know.

As for working with other people, I think that's a great idea. However, I think it might be hard to find teammates if you don't have any sort of past work to show off. This is where having a game or two under your belt is handy, besides obviously the experience you gained from making them.

As for advice though, I'd say we have quite a few community members that are willing to give you feedback in any area, including design, programming, balance, etc. You can add me on skype as "patrickgh3", I'd be more than happy to try and answer any questions. Sorry for this kinda wordy post. Best of luck making fangames! :)

120
Game Design / Re: Gamemaker:Studio is broken, again
« on: January 05, 2016, 10:11:34 PM »
1. If you edit your post, people that browse the most recent posts are probably not going to see it. Consider making a separate post instead if you have important information to add.

2. The error message says "Please check the Compile window for any additional information." Obviously, you should do that, and if you still need help, post a screenshot of that too. Always thoroughly read your error messages before asking for help. If you don't, then people will think you're not putting in any effort yourself and won't want to help you.

Cheers!

Pages: 1 2 3 4 5 6 7 [8] 9 10 11 12