• Breaking News

    Saturday, February 19, 2022

    I've tried my best, but after 16 days on Kickstarter, my game is only 48% funded. Here's what I've learned.

    I've tried my best, but after 16 days on Kickstarter, my game is only 48% funded. Here's what I've learned.


    I've tried my best, but after 16 days on Kickstarter, my game is only 48% funded. Here's what I've learned.

    Posted: 19 Feb 2022 09:23 AM PST

    Hi everyone, my name is Jack and I've been making a game called GigaSword for the last few years.

    After releasing a demo on itchio in early 2021, the game started to amass a pretty decent following, and come the Fall of last year, I decided I was ready to prepare for Kickstarter. I spent the next few months creating a new demo, adding new features, making trailers, building the Steam page, coming up with rewards, and doing everything else that was necessary to set up the campaign. It was a ton of work; I spent most days working straight from 9am to 9 or 10 pm, and I was determined to not rest until everything was perfectly in place. After revealing my plans to my followers in mid January, I launched the GigaSword Kickstarter on February 3rd. I wasn't sure what to expect; would the game be funded in 24 hours like some lucky projects are? Would it take longer? Would it fail completely? I wasn't sure what the outcome would be, but sadly, after 16 days and only 12 left to go, things just kind of have me worried.

    Don't get me wrong, there's been a lot of awesome support and encouragement towards the project so far. I've gotten countless comments from people telling me how much they love the demo, and I've even been lucky enough to garner praise from Yacht Club Games and Mongoose Rodeo, which is incredible. Everyone seems to love the game; but despite this, I've still just been anxious given that time is gonna be running short soon. I think I just haven't reached enough people, and that brings me to what I'd like to talk about here: marketing.

    I've learned more about marketing in the last two weeks than I ever have in my whole life before this. I wish I had known these things before I launched, which is exactly why I'm making this post. I won't try to fool anyone; part of the reason I'm writing this is obviously to see if I can attract any more support for the game. But the other huge reason I'm doing this is because I know how much developers care about their games, and it hurts really bad to try your absolute best only to stare defeat in the face two weeks later. GigaSword is my dream project, and if I had known some of these tips before starting the campaign, things probably could have gone a bit better from the get go. I don't want anyone else to have to go through this kind of anxiety, so hopefully my thoughts here can be of some assistance to anyone thinking about launching a campaign of their own.

    So with that being said, here's my advice.

    #1: Reach out to people as early as possible.

    A common tactic in gamedev marketing is to reach out to streamers and youtubers. One of my biggest mistakes is that I didn't do this at all until the campaign had already launched. I guess I just wasn't thinking about it. Maybe part of me thought that those kinds of people would just find the game on their own? News flash: they won't; unless your game has some sort of viral quality, but that's not something you can count on. Here's something to understand: it doesn't matter how good your game is; nobody will come to it if they don't know it exists.

    So my biggest advice to you here is just to start this step as early as possible. As soon as you have a demo, you should be sending it out to streamers, followers, and anyone else you can think of that would enjoy it. Don't wait till launch day, don't wait till Kickstarter; you've got to build that support early on. Most streamers, even the less popular ones, are pretty busy, and get tons of emails every day from people like us asking them to try our games. Most of them will never respond, and the ones who do might take a while. Whatever amount of time you have before your campaign to reach out to people, use it.

    #2: How to find the right streamers

    This is essentially about knowing your target audience. It never hurts to reach out to random streamers, but your top priority should be to reach out to people that enjoy games similar to the one you're making. For instance, GigaSword is essentially a mix of games like Shovel Knight, Axiom Verge, and Blasphemous, so I looked up lets-plays for those games as a way of finding people who would most likely enjoy it. If your game is, for example, a pet-farming RPG, try looking up streamers and youtubers who enjoy things like Pokemon or Animal Crossing and reach out to them. It still doesn't hurt to reach out to the guy playing Fortnite and Among Us, but you'll certainly have better chances with the former.

    Also, look for unpopular streamers. Like, <5,000 followers or whatever. These people are WAY more likely to respond, and you never know who might end up seeing their content. Even if only 100 people watch their youtube playthrough of your game, one of those 100 people might be some generous dude with expendable income who likes donating thousands of dollars to cool indies. Those people exist, and you never know when you're gonna find them.

    #3: How to message people

    Nobody likes to be bothered. My greatest fear is always that I'll annoy people if I reach out to them, so finding effective ways to do so was a challenge for me. Here's what I've learned: make your messages short and to the point, and don't make it about yourself. When I first started emailing people, I was writing these long, drawn out messages about that included all these unnecessary details. I'd write stupid shit like how long I had been working on the game, how important it was to me, why I was launching on Kickstarter, and so forth. It was a mess. I'm sure most people took one glance at those emails and moved on.

    As I began to get some more advice and feedback from friends, I shortened my approach and made things much simpler. Here's what my shortened format ended up becoming:

    -Introduce yourself and your game. "Hello (streamer), my name is Jack and I'm a solo developer making an action-puzzle metroidvania called GigaSword!"

    -Tell them why you're messaging them. "I just launched a new demo for the game, and I've been looking for cool people who might enjoy it."

    -I like to include a sentence about why I've chosen them specifically, to add a personal touch to the message: "I'm a huge fan of your channel, and seeing as you enjoy games like Shovel Knight and Axiom Verge, I figured I should reach out!"

    -Make them interested with a one sentence elevator pitch. Follow up with an invitation to play for themselves: "GigaSword is essentially Shovel Knight, Zelda, Metroid, and Dark Souls put into a blender. If you're interested, you can find the steam page here! (link)"

    -Thank them for their time, and let them know that their response would mean a lot to you. Don't be overly sappy, just show them that you care and that you're not some souless gamedev robot.

    This is the overall format I used. It's not perfect, I'm sure plenty of people in the comments could come up with improvements, but it's a good start.

    #4: Be wary of competition.

    Let's shift gears a bit, cause I want to talk about competition on Kickstarter. Picture me: I'm a dude making a retro inspired, pixel art, shovel knight style fantasy metroidvania. Two days before I launched, Yacht Club hits the scene with Mina the Hollower. All of a sudden, my entire target audience has somebody WAY bigger than me to give their attention to. Now, would things be going better for GigaSword if Mina hadn't launched at the same time? It's tough to say, but I'm sure it's at least making some sort of impact. No hard feelings towards Yacht Club of course, it just is the way it is, and I've got to adapt to how things have turned out.

    Not only is Mina running it's campaign right now, but Bo: Path of the Teal Lotus is too. This is another very promising looking metroidvania. Both Mina and Bo had way bigger followings than I did going into their campaigns. To be fighting for Kickstarter attention at the same time as BOTH of these giants has definitely not been ideal. Once again, no hard feelings towards those guys, it's just the way things are!

    So my advice on this front would be to do some scouting on Kickstarter. Look for games that are already up that are similar to yours, and also look for pre-launch pages. The more isolated your game can be from everything else on the site at the time of your campaign, the better. Simply put, if your making a pixel art metroidvania, maybe make sure their aren't any of those looking for funding at the same time as you.

    Of course, there's always cross promotion, and you could find that it's helpful to run parallel campaigns with similar games after all. Both Mina and Bo have given GigaSword shout outs, which I have been super thankful for (and I did the same for them as well), but ultimately, most of their followers were probably satisfied with their current pledges, and didn't feel the need to go invest in any other projects that were so similar. It's tough to say, I'm sort of just spitballing at this point. The bottom line is this: just be aware of the other games that are going to be running campaigns at the same time as you, and act accordingly. Ultimately, it'll be your decision to either wait till those games are done, or hop in with them and try to share their audiences.

    Closing Thoughts

    There's probably a ton more I could write, but I've already written quite the book here, and these four points were the main things I wanted to mention.

    If anyone has any questions or advice, I'd love to hear it. I'll do my best to answer everyone. I'm not an expert on any of this stuff, but I'm learning every day, and I just want to be able to help out.

    If you'd like to check out my campaign for GigaSword, you can find it here: https://www.kickstarter.com/projects/726600008/gigasword-an-action-puzzle-metroidvania

    And if you wanna play the demo, you can do so here: https://store.steampowered.com/app/1885930/GigaSword/

    Thanks so much for reading this whole thing. I appreciate you guys! And remember, don't ever give up.

    Edit: I realize now that some of what I've written here sounds very desperate, and I'm sorry to have come off that way. A lot of you guys have commented telling me not to worry, and that these are great stats so far, which is really encouraging! I honestly think I just had a bit of a warped perception of how fast campaigns are supposed to move. I'm extremely thankful for the support that the game has received so far; it really means the world to me. Even if the campaign should fail (and most people here seem to think it won't!) , I've still been fortunate enough to meet a ton of people willing to support the project. Thank you guys for your both your positive feedback and your criticism, it really means a lot and none of it has gone unheard. A lot can happen in these next 12 days, and whatever occurs, I'm really thankful for everything!

    submitted by /u/J_Hybrid_B
    [link] [comments]

    A game console selling under 1 million units is a flop. So why is NFT's 400K audience so important for companies, despite angering every other user?

    Posted: 19 Feb 2022 02:29 PM PST

    Why? Why do these companies want to appeal a tiny audience, and anger everyone else? Edit: this is against NFTs, I'm wondering why do so many companies want to piss off everyone, while appealing to only 400K NFT users.

    submitted by /u/ExtremeConnection26
    [link] [comments]

    The Game Design Resource Guide

    Posted: 19 Feb 2022 07:45 AM PST

    Going Free to Play vs 5$ on Steam - Should I Go Free to Play to Avoid My Game Dying?

    Posted: 19 Feb 2022 04:48 PM PST

    Hey, I'm going to release my casual multi-player social game on steam as early access next month(and to do a free playtest in about a week for feedback) and my original plan was to sell it for 5$ on steam and free to play on mobile.

    I tried to market it, but only 2 people joined my discord and 60 people signed up to the playtest(90% of them came from inside steam and not from the marketing that I did)

    From the interest of people in my game, my prediction is that I'm going to release it and 10-50 people will buy it and even if it will be amazing I don't see how I can grow from that(I got this sales number from my previous game)

    from a financial prespective I think going 5$ will generate more revenue than free to play with skins especially when I am solo dev that can't focus full time on making great in game store(I prefer to focus making the game fun) and I will need to sustain myself with the game if I will continue with its development.

    So my big question, should I go f2p to lower the chances of my game failing by attracting more players or going 5$ while continue marketing the game in a hope that some big streamer/YouTuber will play it? (or third option change to f2p later on if the game fails but it might be too late already)

    submitted by /u/AvivBI
    [link] [comments]

    How do solo devs do it?

    Posted: 19 Feb 2022 04:56 AM PST

    Hey, I'm a novice developer and I've been teaching myself Unity for a couple years now. I've learned a lot of things so far and am continuing to do so, but I'm struggling to keep myself motivated especially when it comes to complex programming tasks. Working on something that's completely new to me and I don't yet understand is incredibly exhausting and it kills my motivation.

    I'm sure it would be easier with a team of even a couple people as it would bring multiple perspectives to a problem, but unfortunately I don't know anyone who is interested in programming nor do I know how to meet someone like that.

    So question is, how do you motivate yourself to keep working on a project?

    submitted by /u/roastedfkingpotatoes
    [link] [comments]

    How much funding is required to make an online game?

    Posted: 19 Feb 2022 02:31 PM PST

    For the experienced devs out there, how much did it cost (a rough estimate) to build your video game? What factors should I keep in mind while building my game, that may turn out drain money. Any hidden costs that may pop up later? Also, what are the best ways to raise money for the game?

    submitted by /u/Advanced-Tune3687
    [link] [comments]

    How and Where Should I Promote my Game?

    Posted: 19 Feb 2022 11:57 AM PST

    I've been working on it for about two weeks, on and off. It's a topdown 2D maze game, and I've published the alpha version on itch.

    submitted by /u/NauteraStudios
    [link] [comments]

    Games that did well recently with low art budgets?

    Posted: 19 Feb 2022 09:27 AM PST

    Nowadays you need art to stand out and how important it is to factor in with gameplay. Are there any successes that didn't involve alot of art? The only one I saw was Vampire Survivors.

    submitted by /u/Equivalent-Demand460
    [link] [comments]

    A Writeup of How You Can Implement A* Pathfinding

    Posted: 19 Feb 2022 01:57 PM PST

    I recently had to make an implementation of the a* pathfinding algorithm for a project, so I'll go ahead and outline my process for doing so here along with some additional helpful resources. Note: I made my implementation in java and so the example code snippets included may be in java or may be in non language specific pseudocode. Fortunately the techniques described are achievable in many languages with the proper translation.

    The algorithm seems daunting at first but it's implementation can be very straightforward once there is an understanding of it's key concepts.

    Nodes

    To begin, the area that can be traversed is composed of Nodes (Commonly called tiles). Nodes should be able to do a few things to make things easier down the road (these aren't all necessary / may be better to be the responsibility of another thing, this is just my approach)

    • Self Position
    • Type
    • "Came From Node"
    • Neighbors
    • H Score, G Score, and F Score
    • Heuristics

    -Self Position

    As you might imagine, each node should store it's own 2D (or in my case 3D) position as cartesian values. These should be publicly accessible as other nodes will need access to this information as we'll see later.

    private final int x; 

    private final int y; private final int z;

    Making each node hold it's position allows for the convivence of saying something like:

    newNode.store(node.getX(),node.getY()) 

    -Type

    Each node should also be aware of if it is traversable or not. This can be done with just a boolean:

    Boolean isBoundry; 

    or, like in my implementation, a more complex approach could be taken to account for different types of nodes such as

    public enum NodeType{ OPEN, CLOSED, PATH, BARRIER, START, END, UNASSIGNED 

    }

    where a node would have a variable like

    private NodeType nodeType = NodeType.UNASSIGNED; 

    Either way can work and just depends on what the use case is. In mine, I wanted to render the pathfinding algorithm in real time so knowing the state of the node was important.

    -"Came From Node"

    Finding out how to get from the start node to the end node will be pretty difficult without recording the path along the way. I opted to use the linked list approach where each node stores a reference to the node that is part of the path that is directly before it in the path.

    In other words of I have:

    - - - - - - - - - - - - - - - [5, 0][6, 0][7, 0][8, 0][9, 0][10, 0] - - - - - - - - - - - - [4, 1][5, 1][6, 0][7, 1][8, 1][9, 1][10, 1] - - - - - - - - - [3, 2][4, 2][5, 2][6, 2][7, 2][8, 2][9, 2][10, 2] - - - - - - [2, 3][3, 3][4, 3][5, 3][6, 3][7, 3][8, 3][9, 3][10, 3] - - - [1, 4][2, 4][3, 4][4, 4][5, 4][6, 4][7, 4][8, 4][9, 4][10, 4] [0, 5][1, 5][2, 5][3, 5][4, 5][5, 5][6, 5][7, 5][8, 5][9, 5][10, 5] [0, 6][1, 6][2, 6][3, 6][4, 6][5, 6][6, 6][7, 6][8, 6][9, 6] [0, 7][1, 7][2, 7][3, 7][4, 7][5, 7][6, 7][7, 7][8, 7] [0, 8][1, 8][2, 8][3, 8][4, 8][5, 8][6, 8][7, 8] [0, 9] *[1, 9][2, 9][3, 9][4, 9][5, 9][6, 9] *[0, 10][1, 10][2, 10][3, 10][4, 10][5, 10] 

    and the algorithm goes from node(0,10) to node(1,9), in node(1,9) I would want to store a reference to node(0,10) as the came from node. When we extrapolate this example out we see that when we get to the ending node, we have a reference chain that leads all the way back to the start node.

    [EndNode]->[Nth Node]->[N-1]->[N-2]->...->[StartNode] 

    This is how you get the path when the algorithm is all said and done! Admittedly, you could skip this if you don't need to know that path and just need to do discrete actions when traversing from 1 node to the next, but I'd say add it in anyways since it is part of the base algorithm and it may come in handy down the road. The implementation for this may look like:

    private PathNode cameFrom; 

    -Neighbors

    Neighbors are an important concept in this algorithm. A Neighbor refers to all the nodes that can be traversed to in a single step from the current node.

    So, if the nodes were arranged in a Cartesian Grid where the node shape was square, and a valid step could be in the horizontal, vertical, or diagonal directions, that would mean that in the ideal case there are 8 possible neighbors.

    Outside of stepping range Outside of stepping range Outside of stepping range Outside of stepping range Outside of stepping range
    Outside of stepping range Neighbor Neighbor Neighbor Outside of stepping range
    Outside of stepping range Neighbor Current Node Neighbor Outside of stepping range
    Outside of stepping range Neighbor Neighbor Neighbor Outside of stepping range
    Outside of stepping range Outside of stepping range Outside of stepping range Outside of stepping range Outside of stepping range

    Similarly, if the directions for travel were limited to just horizontal and vertical movement then we would expect only 4 possible neighbors.

    Outside of stepping range Outside of stepping range Outside of stepping range Outside of stepping range Outside of stepping range
    Outside of stepping range Outside of stepping range Neighbor Outside of stepping range Outside of stepping range
    Outside of stepping range Neighbor Current Node Neighbor Outside of stepping range
    Outside of stepping range Outside of stepping range Neighbor Outside of stepping range Outside of stepping range
    Outside of stepping range Outside of stepping range Outside of stepping range Outside of stepping range Outside of stepping range

    We can see from this that the way in which moves happen is greatly affected by our neighbor choice and that we need to carefully populate neighbors to ensure that we don't add too many or too few either making the traversal from our start to end, in the worst case, take only one step if too many (or all) nodes are said to be neighbors, or, conversely, that it takes infinite steps because we forgot to add the neighbors on the eastern boundary making it ultimately impossible to reach the end in some cases.

    We can populate the neighbors for a node by creating a small algorithm with rules to limit what nodes are added. For example, if we wanted to make an algorithm for our first example with 8 possible neighbors we would say that the rules are:

    • Nodes with an X position that is within the inclusive range of 1 less or 1 greater than our current X position that we're finding neighbors for
    • Nodes with an Y position that is within the inclusive range of 1 less or 1 greater than our current Y position that we're finding neighbors for
    • this.X =/= OtherNode.X AND this.Y =/= OtherNode.Y
    • Nodes that are not of the type BARRIER
    • And Nodes that have valid positions that are within our collection of nodes

    If we assume that the neighbors are stored in a non-ordered list like so:

    public ArrayList<PathNode> neighbors = new ArrayList<>(); 

    With the assumption that all possible nodes are stored like:

    ArrayList<ArrayList<Node>> nodes = new ArrayList<>(); 

    Then our algorithm to get all valid neighbors would look something like:

    public void updateNeighbors(ArrayList<ArrayList<Node>> nodes){ //The range of Current x - 1 to Current x + 1 for (int xOffset = -1; xOffset <= 1; xOffset++){ //The range of Current y - 1 to Current y + 1 for (int yOffset = -1; yOffset <= 1; yOffset++){ //If our node is not the node in question if (!(xOffset == 0 && yOffset == 0)) { //and our x and y with offsets is a valid node if ((x + xOffset < nodes.size() && x + xOffset >= 0) && (y + yOffset < nodes.get(x).size() && y + yOffset >= 0)){ //and not a barrier if (nodes.get(x + xOffset).get(y + yOffset).nodeType != NodeType.BARRIER) { //then we have a new neighbor! neighbors.add(nodes.get(x + xOffset).get(y + yOffset)); } } } } } } 

    As per usual there are other ways to do this as well that might add or subtract rules, but the root concept will be the same.

    - H Score, G Score, and F Score

    Another element that is crucial to the algorithm is the H, G, and F Scores.

    Just imagine for the time being that scores are just a "goodness" rating of distance, for example if you had to drive 5 miles to work vs 80 miles, you would likely rate the 5 mile distance as the better choice. While your rating doesn't directly translate to a distance on its own it still gives a sense of which is better when compared to other ratings. This will make more sense once the Heuristics are explained.

    The meaning of the scores is as follows:

    • H Score
      • The score assigned by the Heuristics that correlates to the cost to get from the current node to the end node.
    • G Score
      • The score assigned by the Heuristics that correlates to the cost to get from the current node to the start node.
    • F Score
      • F Score = H Score + G Score, which is the key way to compare nodes to determine which is better.

    So why do these matter?

    The H score is used to determine the neighbor we should choose to get us closer to our goal. This will be further explained in the final implementation section, but if we have a neighbor that has a tentative H score (As in, if it was selected to be the current node the value of the H score it would have) that is better than the current nodes H score, then that would make it a "possible good candidate" for the next current node.

    The G scores sole purpose in this implementation is to help determine the F score. Poor thing lol

    The F score, like mentioned above, is used to determine what we set the current node to when we want to take a step closer to the end node. Whatever node that is stored as a "possible good candidate" for the next current node that has the best F score will be the next current node. This is how we take steps to towards the end!

    In my implementation the score code looked like:

    //We set these to Float.MAX_VALUE initially because we essentially want them to be equal to infinity until we are ready to deal with them private float gScore = Float.MAX_VALUE; private float hScore = Float.MAX_VALUE; private float fScore = Float.MAX_VALUE; public float get_gScore() { return gScore; } public void set_gScore(PathNode pathNodeA, PathNode pathNodeB) { gScore = Heuristics(pathNodeA,pathNodeB); } public boolean tentative_gScore(PathNode otherPathNode, PathNode endNode) { //temp_gScore is the gScore of one of the neighbors float temp_gScore = Heuristics(otherPathNode,this) + otherPathNode.get_gScore(); //"Possible good candidate" check, if it is a good canidate we'll be using it, so it needs to have the appropriate init values if (temp_gScore < get_gScore()){ cameFrom = otherPathNode; gScore = temp_gScore; set_hScore(this, endNode); set_fScore(); return true; } else { return false; } } public float get_hScore() { return hScore; } public void set_hScore(PathNode pathNodeA, PathNode pathNodeB) { hScore = Heuristics(pathNodeA, pathNodeB); } public float get_fScore() { return fScore; } public void set_fScore() { fScore = gScore + hScore; } 

    Heuristics

    Heuristics is the heart of A* Pathfinding! Stanford did an excellent job talking about the relation between Heuristics functions and the resulting behavior of the A* pathfinding algorithm, I'd highly encourage reading the linked article. At a basic level for our purposes Heuristics is a way to estimate how far apart 2 nodes are from each other in a normalized format that is good for comparison.

    In my implementation I experimented with 2 classic approaches, the "Manhattan Approximation" and the "Pythagorean Approximation".

    The Manhattan Approximation gets it's name from how directions are given in Manhattan, where commonly you may be told to travel 4 blocks straight make a left and then travel 3 more blocks, due to the grid-like nature of the city. In that example the Manhattan Approximation would return 3 + 4 blocks which is 7. This standardized value can be used to compare distances as long as all distances are in this format. This implementation would look like:

    private int ManhattanApproximation(Node nodeA, Node nodeB) { //using Manhattan Approximation to determine Classical H value return Math.abs(nodeA.getX() - nodeB.getX()) + Math.abs(nodeA.getY() - nodeB.getY()); } 

    \* In previous code blocks this function is referred to as Heuristics

    The Pythagorean Approximation get it's name from, you guessed it, the Pythagorean theorem, where given the 2 block length from our previous example of 3 and 4 we would get 5 after doing √(32 + 42) which gives us the direct length as shown below.

     |\ | \ 5 4 | \ |_ _ _ \ 3 

    Just like before this standardized value can be used to compare distances as long as all distances are in this format. This implementation would look like:

    private float PythagoreanApproximation(Node nodeA, Node nodeB) { //using Pythagorean Approximation to determine Classical H value return (float) Math.sqrt(Math.pow(pathNodeA.getX() - pathNodeB.getX(), 2) + Math.pow(pathNodeA.getY() - pathNodeB.getY(), 2)); } 

    \ In previous code blocks this function is referred to as Heuristics*

    The Stanford Article covers why you might pick one over the other depending on your implementation.

    Thus far all of the above mentioned details have been contained in an object referred to as node (commonly referred to as tile) showing just how much the tile can be responsible for and the intricacies that are likely present in more complex works on display in some of your favorite games, neat!

    The Final Algorithms Implementation

    With the heavy lifting out of the way we have a very simple algorithm left. The algorithm uses the concept of something called an Open Set. Open set is a list of all the nodes that are "possible good candidates" for our next current node. Open set is commonly represented as a priority queue because it allows for the retrieval of the best choice out of the possible good candidates to be done in O(1) time complexity (which is what we want in games :) ), and allows all nodes to be stored with a priority which equals their F Score! (We've come full circle lol). To get the priority queue to use the F Score for priority, (The whole point of using this structure) in java we'd say:

    /** * Priority Queue Comparator to get the least fScore */ private class NodePriorityComparator implements Comparator<Node>{ @Override public int compare(Node a, Node b){ return (int) (a.get_fScore() - b.get_fScore()); } } 

    With all the pieces in place we just have the final algorithm

    public boolean pathFindBetween(Node startNode, Node endNode){ if (startRoom == null || endRoom == null){return false;} Node currentNode; //gScore is the cost to get from the current node to the start node startNode.set_gScore(startNode, startNode); //hScore is the cost to get from the current node to the end node startNode.set_hScore(startNode, endNode); //fScore is the sum of the gScore and the hScore startNode.set_fScore(); //The set of discovered nodes that may be part of the path and may have neighbors that are part of the path openSet.add(startNode); while (!openSet.isEmpty()){ currentNode = openSet.poll(); //The win condition if (currentNode.equals(endNode)){ //Reconstruct Path reconstructPath(startNode, endNode); return true; } //If the current node has any neighbors that would have a better gScore from the current node then that of the current //node then set this potential gScore as the new gScore and add this neighbor to the open set currentNode.updateNeighbors(nodes); for (PathNode neighbor : currentNode.neighbors){ if(neighbor.tentative_gScore(currentNode, endNode)){ neighbor.setNodeType(NodeType.OPEN); openSet.add(neighbor); } } //After this iteration the current node will change, so if it's not the start then set it to closed if (currentNode.getNodeType() != NodeType.START){ currentNode.setNodeType(NodeType.CLOSED); } } //No Path From Start to End Exists! return false; } 

    We keep setting currentNode = openSet.poll(); as long as !openSet.isEmpty() which means that we'll eventually, according to our Heuristics, get the most efficient way to get to the end or we'll die trying (and return false).

    Hopefully you've found this writeup interesting / helpful, and of course feel free to ask me anything! I've been keeping an eye on the recent discussion about more interesting content and wanted to take a stab at what that might look like. Happy deving :)

    submitted by /u/InitiumGames_Matt
    [link] [comments]

    Steam show that only 5% of people who have added the demo have actually launched it. How is it possible?

    Posted: 19 Feb 2022 02:26 PM PST

    Hi everyone.

    I am working on a visual novel and I launched it to Steam yesterday.
    Now I am analysing the statistics and it looks weird to me.
    Steam shows that we 850 have "Lifetime free licenses" and I assume that it's the number the players that have tapped on the "Download" button. However, our "Lifetime unique users" value equals 15.
    I wanted to ask how is it possible? Am I misunderstanding something or really 95% of people downloads the game and don't play it?

    submitted by /u/thepsych0o
    [link] [comments]

    How do I write my full ideas down perfectly?

    Posted: 19 Feb 2022 11:53 AM PST

    So for a while now, I can't necessarily figure out how to write my full on ideas down. And to be honest, my ideas are pretty dang complex and I want to write down the full thing(the story, characters, gameplay etc.) but I just can't figure out how to. Plus my ideas change every once in a while. Also I do have a note book but it's not really big though, plus my Google storage is almost full.

    submitted by /u/ThadFTTG
    [link] [comments]

    What's a good android engine for an old-school writer?

    Posted: 19 Feb 2022 05:35 PM PST

    Hello everyone!

    I'm currently seeking some advice on (android) game engines that would work best for a decent writer and artist.

    I currently work best using a pen and paper for character art and a Word doc for copy. And I'm thinking of getting a tablet for drawing.

    I theoretically could learn Javascript or c++ but I fear it'll stretch my limited time too thin and I'll get frustrated.

    The game itself is a text based rpg that will have a simple pixelated gif background (or high def static image), character animation overlay and text boxes. And maybe a world map to travel between locations.

    What do you think I should use?

    I was thinking godot because of cost and apparent ease of use. But looking for an alternative that is easier for dumb dumbs like me.

    submitted by /u/vanhalenforever
    [link] [comments]

    Maintaining good sizing across different displays?

    Posted: 19 Feb 2022 05:17 PM PST

    So I am using C and SDL2 to make a small game (for fun) and I want to know how I could keep the sizing of sprites and stuff good across different sized displays and stuff. Like dpi and stuff. Or would it not matter? I wouldn't want it to be too small on smaller screens so what would I do?

    submitted by /u/KiwiFruit555
    [link] [comments]

    trail renderer not working (unity)

    Posted: 19 Feb 2022 05:05 PM PST

    im working on a racing game in unity, and made the effect emitter script.

    essentially when the car drifts, it turns the tyreMarks.emitting to true and plays the ParticleSystem. this worked before, and without making as single change to the code or the car prefab, when I made a new map, it stopped working.

    I even tested the if statements by putting Debug.Log("on road") in the if (onRoad) statement, and it worked. same thing in if(sidewaysSlip >= 0.5f || ...whatever) and that worked too, it just wouldn't start emitting. as I said, this code worked when there was only a plane that I was driving around.

    im stuck on this for 10 days trying to figure out how to fix this...

    1 thing to point out is that yes, I did tag all the objects accordingly

    this is the code:

    using System.Collections; using System.Collections.Generic; using UnityEngine;

    public class EffectEmitter : MonoBehaviour { WheelCollider wCollider;

    public TrailRenderer tyreMarks; public TrailRenderer tyreOnGrass; public ParticleSystem tyreSmokes;

    public float sidewaysSlip; public float forwardsSlip;

    WheelHit hit;

    public bool onRoad; public bool onGrass;

    private void Start()

    { wCollider = GetComponent<WheelCollider>(); }

    void Update() { wCollider.GetGroundHit(out hit);

    if (hit.collider.tag == "road") onRoad = true; else onRoad = false;

    if (hit.collider.tag == "grass") onGrass = true; else onGrass = false;

    sidewaysSlip = hit.sidewaysSlip; forwardsSlip = hit.forwardSlip;

    if (onRoad) { if (sidewaysSlip >= 0.5 || sidewaysSlip <= -0.5 || forwardsSlip >= 0.9 || forwardsSlip <= -0.9) { tyreMarks.emitting = true; tyreSmokes.Play(); } else { tyreMarks.emitting = false; tyreSmokes.Stop(); } } if (onGrass) tyreOnGrass.emitting = true; else tyreOnGrass.emitting = false; if (!onGrass && !onRoad) { tyreMarks.emitting = false; tyreSmokes.Stop(); tyreOnGrass.emitting = false; } } }

    (pls ignore the naming)

    what can be the cause of this??

    submitted by /u/Emeraldbear567
    [link] [comments]

    Prototyping a Horror Game

    Posted: 19 Feb 2022 07:18 AM PST

    How would you guys go about prototyping a horror game? My issue is that to me, most of what makes a good horror game is less the gameplay and more of the art, sounds, and general atmosphere, the things that usually come last, if at all, during the prototype phase. Has anybody ever made a horror game and can help me out with what they did for a prototype?

    FYI I do have a prototype plan to go on, I'm just wondering if there's a better way to do it than what I already have in mind.

    submitted by /u/1nsert_usernam3_here
    [link] [comments]

    This is the first time we are attending the steam festival. We would be grateful for any advice.

    Posted: 19 Feb 2022 01:16 PM PST

    We have been developing a turn-based strategy RPG game for six months.

    It was a high-quality game, but since we are developers, we are very inexperienced in marketing. So any marketing advice is appreciated.

    submitted by /u/Neura_Mechanicus
    [link] [comments]

    Art and texture repetition from megascans in games?

    Posted: 19 Feb 2022 05:00 PM PST

    I have noticed that many games (and movies) these days seem to use megascans, specifically I have often seen the quixel megascan logo in many game credits screens and when visting their site I saw many big AAA tiles who have used their library, among others Cyberpunk, Resident Evil 7, The Division 2, Demon Souls, Tomb Raider, Shadow of the Colossus, Destiny, Call of Duty etc etc etc. The list seems pretty much endless.

    Seem almost everyone uses them.

    My question is though how do these games and movies "prevent" that they use assets that are used in other games or movies, or what is the thought on it? Or do they not care? Personally I would make a "doubletake" and find it a bit jarring to see the exact same wall texture in a house while I play Cyberpunk that I have seen before in Resident Evil 7 etc. I guess one have to really pay attention to spot something like that, but still it makes me wonder. Using "store assets" is generally frowned upon in regards to indie games on Steam etc so big studios using "store assets" surprises me a bit, even though I understand it saves a big amount of time.

    It would also be interesting if there actually exist any pictures or videos out there of examples where people have spotted identical assets or textures in different games or movies?

    submitted by /u/elektrisko
    [link] [comments]

    Workflow For Creating Sprite from Hand Drawn Image

    Posted: 19 Feb 2022 12:45 PM PST

    I was wondering what others use as a workflow for converting or using a hand drawn image to a sprite sheet.

    I'm still learning gamedev and creating assets on my own from the ready made ones, and I have a hand drawn character that I would like to take from the page to the game, with the ability to "move" the lines for legs and arms to simulate animation.

    My google-fu isn't strong as to what this is called so any reference articles or youtube videos are welcome!

    submitted by /u/njgura87
    [link] [comments]

    collaborating on a project - shaders not loading without original package (Unity 3D)

    Posted: 19 Feb 2022 08:58 AM PST

    Hey, so I'm working on a project and I want to share the file with my friend, who is also going to work on it.

    When I sent him the file, he downloaded it just fine, but, the textures didn't load - because the shaders were not there. I copied the original shaders from my file, but they don't load.

    The problem is, I purchased some assets from unity asset store and unless he downloads the original package (the one I bought) from package manager, the shaders won't load. So that means he would need to purchase it.

    How can I share the project with him, without him having to buy the same assets from unity asset store? It's a game we are working on and I'm building the levels and he is doing the code.

    (screenshots of what the shaders look like in this post)

    submitted by /u/Recent_Ad14
    [link] [comments]

    How do you get analytics on your game?

    Posted: 19 Feb 2022 08:44 AM PST

    Any platform really I'm just wondering what people are using these days.

    submitted by /u/techiered5
    [link] [comments]

    Is there some way to change a steam date to a release date in the past?

    Posted: 19 Feb 2022 04:07 PM PST

    I'm planning on making some small game in celebration of 2s day (2/22/2022) as it is a kinda once in a lifetime date (although 2/22/2222 would be cooler, I doubt I'll be alive for it). The issue is, I currently have nothing set up for steam. I'm putting it up on itchio on the proper date, but by the time I figure out setting up steam stuff, I doubt it'll be 2/22/2022 anymore. Would it be possible to change the release date to when it was released on itch? or do I just need to take the loss here?

    submitted by /u/TechBasedQuestion
    [link] [comments]

    Tutorial request: Adding damage to multiplayer ability system

    Posted: 19 Feb 2022 10:56 AM PST

    Making very basic real time strategy game, test limits and lag when everyone one making decision. Method to fix like make AI make orders in turns?

    Posted: 19 Feb 2022 02:30 PM PST

    Made simple real time strategy game as more excel sheet. Try test the max limit, thinking it's an excel sheet how bad can it be. Oh boy does it get exponential. So when declare war or decision a another player does to change everyone's mind it's massive lag spike. Any fixes? I thought about giving all AIs stagger turns to use the computing power (like super fast with a clock and only this guy can use at this time), kind of working (honestly don't know), wondering if right direction or there's a better method? Now thinking I guess computing power is already in turns. IDK

    submitted by /u/HeroTales
    [link] [comments]

    No comments:

    Post a Comment