Jump to content
  • Advertisement
  • Features

    1. Past hour
    2. Hodgman

      Modern Network Protocols

      It's not really a protocol thing. If you're hosting a service behind a router, you either need some kind of port forwarding, or you need to perform "NAT punchthrough" between the client/server to create a connection. For port forwarding, there's UPNP these days that lets your game ask the router to temporarily gotta port without the user having to manually configure it. For NAT punchthrough, many platforms (e.g. Steamworks) will have a library to do that for you, and also a service to handle the failure situation where a connection can't be created. These services use a machine in the cloud as a kind of fake server, which just forwards data. When a client player can't connect to the server player for whatever reason (port forwarding / NAT punchthrough have failed), then instead, both of them connect to one of these cloud servers that then forwards their communications to each other.
    3. Ostrofa

      My first multiplayer game "Ostrofa"!

      By the way, if you guys want to see daily content with the game update, I make a new post almost every day on Instagram. Be sure to follow: https://www.instagram.com/ostrofagame/
    4. Today
    5. My brother told me that modern games no longer use network protocols where you have to worry about opening ports to host games. I'm trying to figure out what he's talking about. Is there a more modern protocol I can use with C# where I don't have to worry about hosting players opening ports? I don't know a ton about this stuff but I would think games still have to open ports to host games.
    6. In contrast with most role-playing video games, The Elder Scrolls series emphasizes the comprehensiveness of the game experience. In early November 2006, Joystiq published an article contrasting Bioware's and Bethesda's works by pointing out their different focuses. Bethesda's works give attention to "Aesthetic Presentation and Search of Open Endings"; Bioware focuses on combat systems and modular architecture. Creative designers of the scroll series in ancient times also mentioned this time in particular.If you loved this article and you would like to get details with regards to Buy Elder Scrolls Online Gold i implore you to pay a visit to our own web-page.Bethesda explained their reason in creating the first work of the series, Typically the Elder Scrolls: The Market: Creating a game surroundings in which players can freely choose their growth path, which the quality of a good paper-and-pencil role-playing game. The Elder Scrolls 2: The Dagger Rain Player's Guide starts with a design statement that the goal of the game developer is to "create an empty book" and that the work is "a game that stimulates exploration and rewards curiosity". All sorts of pathways in the game, whether for good or bad, are chosen by the players themselves. These selections are "just like real life". This design concept has been extended on the ancient scroll 3: Morning Wind. There has never been an impressive game like this between The Elder Scrolls 2: Dagger Rain and The Parent Scrolls 3: Morning Wind flow, but the pursuit of game pictures mentioned in Joystiq's article has become the focus of creation. If you adored this information and you would certainly such as to obtain additional facts pertaining to Cheap ESO Gold kindly browse through our own webpage.Ancient Scroll 3: In the course of the development of Morning Wind, Bethesda doubled its staff members to better create the new game associated with Morning Wind. In Bethesda's own words, "We recognize that the Elder Scrolls: 3 Morning hours Wind must surpass the performance of as well as on the market. Our goal is to make the Elder Scrolls series a benchmark for game advancement. "
    7. That's a really good idea actually. Effects like these would suit such a game well. I'd like to see what you come up with.
    8. Hello. I have my netcode set up that my Server receives client inputs, and stores them in a buffer. As seen in the Overwatch GDC talk, it is described how the client will 'speed up' and 'slow down' it's FixedTimeStep as to send more or less input frames to the Server as needed to compensate for latency and keep the Server on the "bleeding edge" of client inputs. (Meaning that we want our client input buffer to have as few inputs waiting in the buffer as possible, but never empty) I've been struggling for a few weeks now trying to write some semi intelligent code that could help me achieve this in my game. I'm at a loss at this point and am hoping more sets of eyes can help me understand what I might be doing wrong. Below you will see the method 'ClientReceiveBufferState' which is called over the network from Server to Client, passing the last frame # the Server received from the client, and it's current server time TimeStamp. The 'timeChangedFrameCount' variable is incremented by 1 each FixedTimeStep. (I'm using Unity) I'm attempting to keep my Server's client input buffer filled with 2 or 3 inputs waiting at any given time. My thought was that I could more or less calculate the number of frames that the client has become behind or ahead of the Server and Speed Up / Slow Down my fixedTimeStep for that many frames.... but this is not working. Currently when I test with a higher latency, my client gets permanently stuck behind the Server's tick # and it's Frame # is always irrelevant (outdated) once it reaches the Server. Am I over complicating this? void ClientReceiveBufferState(uint lastQueuedFrame, long serverTimeStamp) { // Determine how far behind the server we are long serverTime = TNManager.serverTime; int mTick = (int)SimulationManager.MasterTick; int overTheWireTickCount = (int)(((Mathf.Abs((serverTimeStamp - serverTime))) * 0.001f) / 0.0167f); // Convert to milliseconds and divide by 'normal' FixedTimeStep uint serverClientTickDiff = (uint)Mathf.Abs(((int)lastQueuedFrame + overTheWireTickCount) - mTick); if (timeChangeActive) { // Check if we're back in a good state if (timeChangedFrameCount >= desiredChangedFrameNumber) { Time.fixedDeltaTime = 0.0167f; // 'normal' 60 ticks per second bufferStatus = InputBufferStatus.Normal; timeChangeActive = false; } } if (!timeChangeActive) { if (serverClientTickDiff <= 1) // Going to run out of client inputs in buffer, speed up! { if (bufferStatus != InputBufferStatus.Empty) { bufferStatus = InputBufferStatus.Empty; timeChangeActive = true; timeChangedFrameCount = 0; desiredChangedFrameNumber = (int)(((Mathf.Abs((serverTimeStamp - serverTime))) * 0.001f) / 0.0157f); // Speed Up Time.fixedDeltaTime = 0.0157f; // 'faster' 63 ticks per second } } else if (serverClientTickDiff > 3) // Too many client inputs waiting in buffer, slow down { if (bufferStatus != InputBufferStatus.Full) { bufferStatus = InputBufferStatus.Full; timeChangeActive = true; timeChangedFrameCount = 0; desiredChangedFrameNumber = (int)(((Mathf.Abs((serverTimeStamp - serverTime))) * 0.001f) / 0.0177f); // Slow Down Time.fixedDeltaTime = 0.0177f;// 'slower' 56 ticks per second } } } } Thanks for your time.
    9. GoliathForge

      c# drawing sprites

      Fundamentally they are the same in my opinion. It really doesn't matter at this point what shapes or images you use to represent your on screen entities. Doesn't matter if it's a tank or a bug. Could be anything, because under the hood they are built from the same pieces. What we care about right now is learning code flow, filling our tool box with routines that we discover along the way to reuse and make better. Problem solving is why we turn the machine on in the first place. This will actually be the cool part phil. Once you get this sequence figured out, you will be shooting bugs, having tanks shooting bullets in cool shapes at other tanks, you dream it, you'll be lighting that sprite up with it. Don't get distracted. Have you tried perhaps to work it out on paper? You'd be surprised what you can come up with or potentially realize when you change up your approach. Keep notes of your new ideas though. Return to them when the time is right. How did the reading on arrays go?
    10. JAG-Robert Hashman

      Jaunty Ape Games - Modular Sci Fi Gun Kit

      If you want to join the discussion, I could use your input! What would you add, subtract, or suggest for this kit? Let me know! https://forum.unity.com/threads/released-jaunty-ape-games-modular-sci-fi-gun-kit.647938/?fbclid=IwAR3SMQM8v4txgvRFYapFmqAj4M0qpPBGQxsU6Zmh3skwtM_NqD97BapYIsA … … #AssetStore #Unity #modular #scifi #lowpoly
    11. Honestly this is all probably a bad idea. It just doesn't seem likely that anyone would wanna play a new styled beat-em-up. It's probably too outdated or just doesn't seem to stand a chance against other games today of other genres. Sorry guys, I just don't think I can stand a chance to even have this game even one bit likable The only one in this genre that seems to have done okay is Dragons Crown but that's about it.
    12. frob

      Typical Developer/Publisher Deal?

      This is part of the reason you need a good lawyer who is familiar with the industry. They can go over contracts carefully, they know what is standard and what is not. They also know what unusual that you are offering, such as a near-complete game. A good lawyer will find details that we on the forum can't spot, since they know all the details of your business, and details of your projects, and details of the agreement. Do not blindly sign the contract they offer. Contracts that publishers offer are always written in terms favorable to them, although some offer a more fair deal than others. It is your job to get a good lawyer who can negotiate the terms. The more you are contributing the better the negotiation can become.
    13. phil67rpg

      c# drawing sprites

      well I am thinking about making a game called scorched earth, it has a tank that shoots a bullet in a parabola and tries to hit another tank. I think might a little simpler plus it has some math which I like, I am going to stick with windows forms and also I am still going to work on my bug invaders game, maybe I am going to solve my problem. should I start a new game or should I stick with my current game?
    14. Okay so are you saying that each individual enemy should be vastly different in terms of move mechanics? Or just offer enough enemies with variety of move mechanics and some the same? Like in Streets of Rage you might have 4 guys attacking you at once that are the same speed level with the same moves, while 3 more who attack you are slower and big, while 2 to 6 more are average but use say a weapon. In a game like that they sometimes reuse some of the same enemies for the next stage or next wave of enemies that are next to go and attack you. Coudersport making each enemy that attacks you each have completely different speed, strength, weaknesses, movements, range and different design appearances? Or would that be almost impossible to do with so many characters on screen. For example, a game like God of War and DMC may have the same kind of wave of enemies attack you that were the same as before. But that's a different genre altogether right?
    15. Hello! I'm experiencing a couple of memory leaks and would like to see if anyone knows the correct way to clean them up. The second leak concerns an issue with cscriptarray (version 2.33.0). Basically, I'm finding when I do something like this (result is of type CScriptArray, and AEntity is a custom pass-by-reference that will register with the garbage collector upon construction): result->InsertLast(new AEntity(engine_ptr, *iter)); When this line is ran, AEntity is inserted as expected, but when the script ends, Valgrind reports the AEntity instances are not cleaned up, but the CScriptArrays are. AEntity instances outside CScriptArrays are cleaned up fine. I'm thinking I'm doing something wrong, but am not sure what. If I just missed something in the documentation, feel free to tell me and I'll go recheck. Does anyone have any ideas what I'm doing wrong? Thanks in advance for the help!
    16. Hello! I'm experiencing a couple of memory leaks and would like to see if anyone knows the correct way to clean them up. The first leak concerns setting my custom pass-by-reference string class as an argument on the script 'main()' method. I do the usual context SetArgObject() to set the string on the function, ran the script, and did a GarbageCollect() when done. Even when I clean up the context and engine like so: context_ptr->Abort(); context_ptr->Unprepare(); engine_ptr->DiscardModule(SCRIPT_MODULE_NAME.c_str()); engine_ptr->GarbageCollect(); engine_ptr->ReturnContext(context_ptr); engine_ptr->ShutDownAndRelease(); The string argument is never cleaned up and Valgrind finds it. The other string instances are cleaned up fine. Am I supposed to always manually delete the argument once execution has completed? The string class automatically registers with the engine's garbage collector, so I figured that would do it, but it doesn't seem to work. It's also quite possible I'm doing something wrong, so any ideas are appreciated! Thanks in advance for your help!
    17. Lendrigan Games

      Control Conflict ARPG/Crafting

      For testing purposes at least, go with Option 2. The crafting players will decide for themselves whether crafting controls trip them up in combat, and if it does, you'll be able to get valuable advice for how to refine the layout.
    18. Lendrigan Games

      My idea for a beat em up action adventure type game

      "Fun factor" is inescapably subjective, so figure out first what -kind- of fun you want it to be (relaxing, rhythmic, reaction challenging, and combo challenging are all notable kinds of fun for beat-em-ups) and then measure mechanics and ideas along said style of fun. A fan-favorite method of avoiding repetition is to make various enemies mechanically different from each other. Ignore health/power as differences and instead create gives and takes in regards to what moves they can do, movement speed, attack speed, attack range, and knockback resistance (to name a few variables), i.e. some enemies move and attack quickly but are knocked off their feet easily, some move slowly but attack quickly, some are average in most things but can perform a lot of different moves, and etcetera.
    19. Antonio Schwuchow

      First Entry... what is this?

      So as part of my social service Im tasked with doing this game, mostly designed and directed by me. What is Vapeseras? "Vapeseras" is a mix of two words: Vapor - The direct reference for vaporwave. Pesera - Its a kind of common buses used in the public transport of mexican cities. That name comes from a time where the ride of this "peseras" costed only 1 peso (mexican coin), directly giving the pseudonym to the microbuses. Reason of concept. In my opinion there arent much mobile games created with mexican folklore that have their own gameplay catch to have a good game with a good look, instead this games fall as being too low quality, or being not fun because they are educational but with non effort on the gameplay experience. So i felt that with my personal tastes i could create something worth anyone time, evoking at least small reactions on fun by the gameplay and nostalgy by the visuals and sounds. Concept. So as quickly as i began the project i had to just pick a handful of the things i could add in the game. A big chunk of the aesthetics of the game had to be singular things that i could "vaporize" into vaporwave. For that i picked the CDMX (country´s capital) subway, that has this professional and foreign study of iconography, that reflects countless historic facts and folklore of the whole country. I still need to create some icon of a vaporize station to the game, but these subway titles will be probably only visual and wont refer to nothing specifically on the scene, just to give resemblances of the real stations titles. "Avenida Insurgentes" and "Reforma" are not specifically "METRO" subway stations, but there are similar stations, and the iconography related to those streets have already been designed by Lance Wyman. This signs are to be used on the bus stations on the game. I have somewhat the idea to use the peseras to create some sort of car topdown battle game, but it quickly transformed into this. The peseras (last picture) were choosen because of how iconic they are to the city landscape, so I created a voxel art (for another log) based on the most common bus model and paintjob. I experimented with some fonts for the logo, but finally i went for a kinda racing logo with the mexican METRO (subway) font, with some regular pink and turquoise for the palette.
    20. Hello! This is the first of a few posts I have concerning AngelCode, which has truly been an angel and made it possible to pursue my open source project (more info about that in another post). While looking at cscriptarray (version 2.33.0), I noticed it didn't check for a new pointer after a malloc in Precache(), around line 1694. The fix I added (though I don't think I've tested it specifically yet) is: // Create the cache cache = reinterpret_cast<SArrayCache*>(userAlloc(sizeof(SArrayCache))); /// BEGIN malloc check if (! cache) { asIScriptContext *ctx = asGetActiveContext(); if( ctx ) ctx->SetException("Out of memory"); return; } /// END malloc check memset(cache, 0, sizeof(SArrayCache)); Just wanted to note it as a potential bug for fixing in later versions. Related, I have a more general question about how AngelCode handles malloc fails. A quick inspection of the code suggests that most areas of the interpreter code cannot handle a malloc call failing. Is this true or did I misread it? Is this something under consideration for fixing in the future? Basically, I'm using AngelScript in what is essentially a semi-open sandbox environment, where most users could (if desired) write code and have it execute on the server, often simultaneously with other scripts. Because of this, I have to keep careful tabs on resource usage (CPU and memory). For now, I'm checking memory used by each AngelScript engine via the debug hook (and a custom allocator) and aborting in there if it went over. It would be much nicer to be able to abort during the actual allocation and clean up, but I suspect it would be way too difficult for AngelScript to check every single malloc. Still, I thought I'd check! Thanks for making such a nice, easy-to-integrate product!
    21. agleed

      FSM, BT, HTN, Goap, other

      @IADaveMark A bit late to the party, but I'm wondering: How would you best incorporate multiple decisions that have to be made in parallel into your IAUS architecture? Say my character can (at the same time, in parallel) move and do something else, like shooting, healing themselves, etc.? So could do something like run over to cover and on the way there either shoot at an enemy or ram a health injector into their arm until they've reached cover. They could also decide that instead of moving over to cover, they should try to reach and go up some stairs so they get to a higher elevation that gives them a combat advantage, and again can shoot or heal themselves on the way there. Do you think it would be advisable to just have two separate decision making steps and evaluate the action to be taken for 'what do I do with my feet' and 'what do I do with my hands' (or whatever) independent of each other? That would seem like a simple way to do it but then what if I want the two decision making processes to influence each other? A real person might decide that either (move up stairs + shoot) or (move to cover + heal) or (do nothing with feet + heal/shoot) are good decisions, not only are the other possible combinations are a terrible idea, there still has to be a decision making process which of the valid combinations is the best one to take (kind of bad example in my case but you get the idea).
    22. Yesterday
    23. Carlos Daniel Lopez Romero

      im new to the forum need some basic advices

      thank you to you all i think i kinda get it like i have to build the game and according the type of game i want i need to create the characters and story and stuff
    24. shade4x

      AI for strategic decider

      Your Answer is: 42
    25. FFA702

      Pathfinding (I'm lost)

      Yeah I thought about it, but I want the game area to be as dynamic as possible. On another note, I just tried to write my own pathfinding algorithm and I think I failed spectacularly. The failure comes from the fact the algorithm thinks it's sometime cheaper to go away from the target in one direction even if it's hugging a wall to advance (it might in the case the wall is L shaped and will block it's path). I think I'll ultimately have to try A*, hope it's not *that* slow. Here's the failed code if anyone is interested (I think I'll call it 'Naive Search') public List<point> gridSearch(point start, point goal) { bool[,] visitedNavGrid = new bool[Game.map.size, Game.map.size]; point currentPoint = start; List<point> chosenPath = new List<point>(); int[] consideredAttachedPointWeigh = new int[8]; point[] attachedPointPlan = new point[8] {new point(-1,-1), new point(0,-1), new point(1, -1), new point(-1, 0), new point(1, 0), new point(-1, 1), new point(0, 1), new point(1, 1) }; //Array represents the 8 possible movement option vector from the point c //0 1 2 //3 C 4 //5 6 7 //int lastDirection = 0; chosenPath.Add(start); //The actual algorythm while (chosenPath.Last() != goal) // Until a path is found or no solution is found { for (int i = 0; i <= 7; i++) { int stuckTreshold = 0; point evaluatedPoint = chosenPath.Last() + attachedPointPlan[i]; //check for obstacle, or if the grid has been visited if (Game.map.Dobjects[evaluatedPoint.x, evaluatedPoint.y] == null & visitedNavGrid[evaluatedPoint.x, evaluatedPoint.y] == false) { consideredAttachedPointWeigh[i] = (evaluatedPoint).ManhattanDistance(goal); //The larger the worst } else { consideredAttachedPointWeigh[i] = 1000000000; stuckTreshold++; } if (stuckTreshold > 7) { //The agent is stuck; a contingency should be planned (rn it goes back to it's original pos) List<point> reversedPath = chosenPath; reversedPath.Reverse(); chosenPath.AddRange(reversedPath); return (chosenPath); } } int direction = Array.IndexOf(consideredAttachedPointWeigh, consideredAttachedPointWeigh.Min()); chosenPath.Add(chosenPath.Last() + attachedPointPlan[direction]); visitedNavGrid[chosenPath.Last().x, chosenPath.Last().y] = true; } chosenPath.Remove(chosenPath.First()); return chosenPath; } } } What's interesting is the solution to fix this would be to store each visited tile in a tile structure and then find the shortest path within the structure, which would be remarkably similar to A*.
    26. grmgamedev

      Crypts of Death: Free Android mobile RPG

      New version 1.2 'Crypts of Death' with new areas: Tomb and Marshes also new monsters.
    27. nsmadsen

      First Composition

      You'll get more plays and comments on your work if you put your file up somewhere (like Soundcloud or Youtube) so folks don't have to download a file to hear your stuff. The whole virus thing scares people off. Plus folks respond more if you make their job even easier.
    28. WeChat, one of the world’s largest social networks, with more than 1 billion monthly active users is now opening up its newest and powerful Mini Games platform, enabling game developers around the world to create hit games on WeChat’s unique ecosystem. Here are the proof points: The Mini Games platform has grown to more than 400 million monthly active users. The 7-day user retention rate of some the most popular Mini Games has already rocketed to 54%. Some industry giants have joined the Mini Games ecosystem with their own creations: Google’s “Guess My Sketch” and Game Closure’s “Linsane Hoops.” “Guess My Sketch” is a fun, social WeChat Mini Program developed by Google AI. Players sketch everyday objects within a limited time frame, and Google AI will try to guess what is being drawn. It’s like playing pictionary with Google AI! In “Linsane Hoops” the player follows NBA star Jeremy Lin throughout his career while competing and picking up prizes along the way. The player can collect outfits, basketballs and awesome hairdos all while competing with friends. WeChat debuted its Mini Games program at the U.S. at the Game Developers Conference in San Francisco in a workshop to be held on March 20. WeChat introduced new opportunities for game developers to tap into the social network’s over 1 billion monthly active users and highlighted its dedication to helping overseas developers thrive on the Mini Games platform. This includes opening access to current API and localizing developer documentation to facilitate development and publishing. WeChat also recently launched “Creativity Incentives” which allows each developer to cultivate value through creativity. Any Mini Games with highly creative gameplay, art, music, or story can apply to join the program, and will receive a “Creativity Certified” label in addition to 20% higher revenue share compared to other Mini Games. The incentive also includes creativity protection and will help protect against copyright infringement. Learn more at “How to Build a WeChat Mini Game Ecosystem.”
    29. WeChat, one of the world’s largest social networks, with more than 1 billion monthly active users is now opening up its newest and powerful Mini Games platform, enabling game developers around the world to create hit games on WeChat’s unique ecosystem. Here are the proof points: The Mini Games platform has grown to more than 400 million monthly active users. The 7-day user retention rate of some the most popular Mini Games has already rocketed to 54%. Some industry giants have joined the Mini Games ecosystem with their own creations: Google’s “Guess My Sketch” and Game Closure’s “Linsane Hoops.” “Guess My Sketch” is a fun, social WeChat Mini Program developed by Google AI. Players sketch everyday objects within a limited time frame, and Google AI will try to guess what is being drawn. It’s like playing pictionary with Google AI! In “Linsane Hoops” the player follows NBA star Jeremy Lin throughout his career while competing and picking up prizes along the way. The player can collect outfits, basketballs and awesome hairdos all while competing with friends. WeChat debuted its Mini Games program at the U.S. at the Game Developers Conference in San Francisco in a workshop to be held on March 20. WeChat introduced new opportunities for game developers to tap into the social network’s over 1 billion monthly active users and highlighted its dedication to helping overseas developers thrive on the Mini Games platform. This includes opening access to current API and localizing developer documentation to facilitate development and publishing. WeChat also recently launched “Creativity Incentives” which allows each developer to cultivate value through creativity. Any Mini Games with highly creative gameplay, art, music, or story can apply to join the program, and will receive a “Creativity Certified” label in addition to 20% higher revenue share compared to other Mini Games. The incentive also includes creativity protection and will help protect against copyright infringement. Learn more at “How to Build a WeChat Mini Game Ecosystem.” View full story
    30. During the "State of Unreal" GDC opening session, Epic Games launched Epic MegaGrants, committing $100,000,000 to assist game developers, media and entertainment creators, enterprise professionals, students, educators, and tools developers doing outstanding work with Unreal Engine or enhancing open-source capabilities for the 3D graphics community. Epic MegaGrants marks an evolution from Epic's Unreal Dev Grants program, a $5,000,000 fund initially launched in 2015, which awarded its final grants earlier this week. Epic MegaGrants awards range from $5,000 to $500,000 and cover a variety of endeavors to further ignite creativity and technological advancement within the 3D graphics community. All grant recipients will continue to own their IP and will be free to publish however they wish. Submissions will be evaluated, and grants awarded, on a continual rolling basis as funds allow, with no firm deadlines to submit. "At Epic we succeed when developers succeed," said Tim Sweeney, founder and CEO of Epic Games. "With Epic MegaGrants we're reinvesting in all areas of the Unreal Engine development community and also committing to accelerate the open sourcing of content, tools, and knowledge." Key submission categories for the Epic MegaGrants include: Game Developers: UE4 dev teams of all sizes can apply for an Epic MegaGrant to help make their projects succeed. Developers can also apply for a grant to help transition existing or in-development games to UE4. Media & Entertainment: Individuals or teams applying UE4 to film, television and other visual media, location-based entertainment, and live events are eligible to apply for an Epic MegaGrant. Enterprise: Innovative teams and individuals leveraging UE4 in other non-gaming verticals, including architecture, automotive, manufacturing, simulation, product design, advertising and other areas, may apply for an Epic MegaGrant. Education: Students and educators can earn funding for Unreal Engine research, curriculum, student projects and university programs. Grants will also be given to schools implementing Unreal Engine into classrooms and programs. Tools and open-source development: Teams and individuals can submit an application for a new tool, plans to port existing tools to UE4, or for creating tools that integrate existing software with UE4. Applications can also be submitted for new open-source tools (including tools that provide interoperability) or any enhancement for existing open-source projects related to 3D graphics. Please visit the Epic MegaGrants website for additional details on eligibility and how to apply: http://unrealengine.com/megagrants
    31. During the "State of Unreal" GDC opening session, Epic Games launched Epic MegaGrants, committing $100,000,000 to assist game developers, media and entertainment creators, enterprise professionals, students, educators, and tools developers doing outstanding work with Unreal Engine or enhancing open-source capabilities for the 3D graphics community. Epic MegaGrants marks an evolution from Epic's Unreal Dev Grants program, a $5,000,000 fund initially launched in 2015, which awarded its final grants earlier this week. Epic MegaGrants awards range from $5,000 to $500,000 and cover a variety of endeavors to further ignite creativity and technological advancement within the 3D graphics community. All grant recipients will continue to own their IP and will be free to publish however they wish. Submissions will be evaluated, and grants awarded, on a continual rolling basis as funds allow, with no firm deadlines to submit. "At Epic we succeed when developers succeed," said Tim Sweeney, founder and CEO of Epic Games. "With Epic MegaGrants we're reinvesting in all areas of the Unreal Engine development community and also committing to accelerate the open sourcing of content, tools, and knowledge." Key submission categories for the Epic MegaGrants include: Game Developers: UE4 dev teams of all sizes can apply for an Epic MegaGrant to help make their projects succeed. Developers can also apply for a grant to help transition existing or in-development games to UE4. Media & Entertainment: Individuals or teams applying UE4 to film, television and other visual media, location-based entertainment, and live events are eligible to apply for an Epic MegaGrant. Enterprise: Innovative teams and individuals leveraging UE4 in other non-gaming verticals, including architecture, automotive, manufacturing, simulation, product design, advertising and other areas, may apply for an Epic MegaGrant. Education: Students and educators can earn funding for Unreal Engine research, curriculum, student projects and university programs. Grants will also be given to schools implementing Unreal Engine into classrooms and programs. Tools and open-source development: Teams and individuals can submit an application for a new tool, plans to port existing tools to UE4, or for creating tools that integrate existing software with UE4. Applications can also be submitted for new open-source tools (including tools that provide interoperability) or any enhancement for existing open-source projects related to 3D graphics. Please visit the Epic MegaGrants website for additional details on eligibility and how to apply: http://unrealengine.com/megagrants View full story
    32. Thank you for this write up. I found it educational and inspiring. I too am a solo indie game developer and going through the same struggles as @slayemin, but loving (almost) every minute of it. It's a constant juggling act between a full time job, making time for my spouse, working out a little bit, and carving out as much time as possible every week for game development. It's trying, for sure, but because of my love for game development and the passion I have for my game, I have a blast doing it. That's what keeps me going when, after a long day at work, I take a quick nap and head straight to game dev, or when I get up early in the morning on weekends in order to squeeze the maximum amount of development time out of the day. Your entire article really spoke to me, especially the following: "It’s the masterpiece of art that’s an expression of my identity. If it takes me 10 years to produce this game than so be it. It’s going to be what speaks to who I am." I know exactly what you mean by those words. It reminds me of an interview I saw with Hideo Kojima. The interviewer asked him what was going through his head when he was developing the original Metal Gear game and he said something along the lines of, "I was making the game I wanted to play". Then he was asked, "If you could talk to your younger self from 20 years ago, what would you say to him?". His answer was, "Believe in yourself and push forward." The other part that really spoke to me was your story about the home sandwiches and laminated posters in order to attract PAX goers to play your game. I did a similar thing at the first convention (not PAX) I exhibited my game at. My spouse came up with the idea of bringing a big bag of candy as an incentive to people to play my game and give me feedback. That worked, but I also had to go talk to people and ask them to come over to my "booth" (it was just a large table) and play the game. It was certainly out of my comfort zone, but was also a very rewarding experience. Good luck! I really hope you finish your game in such a way that it fulfills your artistic vision, and that it is successful.
    33. The Substance team has announced the start of the Project Substance Alchemist open beta. Effective immediately, all current Substance subscribers have exclusive and unrestricted access to the latest Substance material tool, uniting the Substance ecosystem like never before. Artists now have a playground for creating and augmenting entire libraries of materials with ease. Project Substance Alchemist advances the art of making and managing 3D materials through instinctive simplicity. Creators can rely on a powerful, streamlined workflow and an intuitive user interface. It’s simple, fast and it uses some of the most advanced technology around. By hiding its complexity through easy-to-use tools like parametric sliders and filters, Project Substance Alchemist brings efficiency to artists and designers, without giving up any of the power that helps them thrive. Starting today, artists are able to leverage the power of a tool that can quickly be adapted to meet their needs. Users can access materials in several ways, including downloading materials directly from Substance Source, find materials offered up by the Substance community or even upload real-world photographs. From there, they can quickly elaborate their own libraries of materials. For instance, a cobblestoned street can be honed to an artist’s exact specifications within Project Substance Alchemist, whether they desire a brand-new look with polished surfaces, or a broken down feel with moss and damaged tiles. Project Substance Alchemist puts powerful tools into the hands of artists who work with scans, with quick and reliable tiling, as well as an AI-powered delighter. Trained with thousands of images, the delighter can instantly balance the shadows and light tied to photos and scans, so that lighting remains even and consistent. Designers who need to iterate rapidly on a material can also enjoy a vast array of variations with the instant creation of material collections based on a single image or a moodboard. Project Substance Alchemist can analyze the artist’s material and automatically generate suggestions on colors and textures, ensuring compatibility and additional creation options. Although it is designed as a standalone tool, Project Substance Alchemist is deeply tied to the existing Substance ecosystem. Artists can search through their Substance Source downloads, import materials and filters made in Substance Designer or swap creations through the Substance Share artist exchange. Imported materials can then be added to the artist's personal library for later use, or applied to an asset in Substance Painter. Thanks to the standardization of the Substance format, materials created in Substance Alchemist can be exported and used in every major 3D tool, including Unreal Engine, Unity, 3ds Max, Maya and many others. Based on years of industry-leading research, and built with the help and feedback of the Substance community, Project Substance Alchemist will continue to develop in order to adapt to the evolving needs of artists and designers. The open beta is available now. For a video walkthrough, click here. Pricing/Availability Project Substance Alchemist is available at no cost to current Substance subscribers. Subscriptions come in Indie or Pro plans, priced at $19.90/month and $99.90/month respectively. Enterprise and education pricing is available upon request. Students and teachers can request a license at no cost.
    34. The Substance team has announced the start of the Project Substance Alchemist open beta. Effective immediately, all current Substance subscribers have exclusive and unrestricted access to the latest Substance material tool, uniting the Substance ecosystem like never before. Artists now have a playground for creating and augmenting entire libraries of materials with ease. Project Substance Alchemist advances the art of making and managing 3D materials through instinctive simplicity. Creators can rely on a powerful, streamlined workflow and an intuitive user interface. It’s simple, fast and it uses some of the most advanced technology around. By hiding its complexity through easy-to-use tools like parametric sliders and filters, Project Substance Alchemist brings efficiency to artists and designers, without giving up any of the power that helps them thrive. Starting today, artists are able to leverage the power of a tool that can quickly be adapted to meet their needs. Users can access materials in several ways, including downloading materials directly from Substance Source, find materials offered up by the Substance community or even upload real-world photographs. From there, they can quickly elaborate their own libraries of materials. For instance, a cobblestoned street can be honed to an artist’s exact specifications within Project Substance Alchemist, whether they desire a brand-new look with polished surfaces, or a broken down feel with moss and damaged tiles. Project Substance Alchemist puts powerful tools into the hands of artists who work with scans, with quick and reliable tiling, as well as an AI-powered delighter. Trained with thousands of images, the delighter can instantly balance the shadows and light tied to photos and scans, so that lighting remains even and consistent. Designers who need to iterate rapidly on a material can also enjoy a vast array of variations with the instant creation of material collections based on a single image or a moodboard. Project Substance Alchemist can analyze the artist’s material and automatically generate suggestions on colors and textures, ensuring compatibility and additional creation options. Although it is designed as a standalone tool, Project Substance Alchemist is deeply tied to the existing Substance ecosystem. Artists can search through their Substance Source downloads, import materials and filters made in Substance Designer or swap creations through the Substance Share artist exchange. Imported materials can then be added to the artist's personal library for later use, or applied to an asset in Substance Painter. Thanks to the standardization of the Substance format, materials created in Substance Alchemist can be exported and used in every major 3D tool, including Unreal Engine, Unity, 3ds Max, Maya and many others. Based on years of industry-leading research, and built with the help and feedback of the Substance community, Project Substance Alchemist will continue to develop in order to adapt to the evolving needs of artists and designers. The open beta is available now. For a video walkthrough, click here. Pricing/Availability Project Substance Alchemist is available at no cost to current Substance subscribers. Subscriptions come in Indie or Pro plans, priced at $19.90/month and $99.90/month respectively. Enterprise and education pricing is available upon request. Students and teachers can request a license at no cost. View full story
    35. The morning colors and now back in Seattle. I should have handed you a pen and flipped open the front cover Keep me in mind if you have a use for an artist on a future project. Thank you again. Mission Accomplished. Time to level up
    36. This is Week 6&7 of an 8 week game dev. A link to blog post covering this weeks development. iPhone Beta is available on TestFlight at https://testflight.apple.com/join/IJDl9FXC This weeks goal was monetization code and UI, the reality was feature creep took up most of my time. Not going to make 8 weeks, more like 9 or 10. It started with a simple change. Cross tiles would look better if one track arched up and the other arched down. That did look cool I thought, but with the straight on orthographic camera, you can only see the arch when the tile is flipping. OK, I'll just move the camera to the side a bit and turn it back towards the board. Not really working. Instead, I'll leave the camera still and angle the board. Yeah, that looks good. But now a rectangular board does not fit on the screen. So I need a new board generator that adds all tiles that are on screen and only tiles that are on screen. This broke board shifting, destroying tiles at the bottom only, and adding tiles as a row at the top. It also broke bouncing at the top. I have not fixed this yet because what is top is not clear. Instead, I made it bounce everywhere for now. I will try to find a better solution next week. It also broke empty tiles as an obstacle. I also made the board angle and size dependent on the theme of the leader. Since my little feature of arches had already taken over the week, I might as well finish it. So I made the direction of the board shifting a variable and added an indicator at the top. I also explored generating tracks at runtime using Mega-Shapes. An asset for generating tracks from splines and lots of control from code. I ran out of time before this second feature creep could get very far. I did get some work done on a diamond currency system. You can collect diamonds and buy new random characters. A new board layout with 3 characters on screen at once for choosing a random character. I wanted to show the new character on the party selection screen. But working with setting UI controls at runtime from code is still a pain. I go it to work but needed lots workarounds for cases like objects awaking the first time and clicking on them from code in the same frame. I ended up making sure stuff had woken up before trying to click on it from code. This needed a new messaging system to display messages to the player. The messages above are showing, gift in 4 seconds, the "Get Gift" message with button, 11 diamonds to go (until you can spend them) the "Get Character" message and button. You get free diamonds every 4 hours of real time. This means tracking real time during and between plays. C# sucks saving timestamps. If you want timestamps to always work you want them all in the same base time, say UTC. MS documents show you how to convert to and from ISO 8601 are wrong they read the ISO string for UTC and ignore the Z so treat it as local timezone. Use "r" format. it uses "GMT" in the string, not Z, and DateTime.parse handles this properly. All your DateTime objects will kinda get UTC. Lost about 5 hours because I assumed MS docs would not be buggy and almost every google search just told me to do the same thing as the MS docs. Unity 2018.3 has nested prefabs and variants which is nice for making a skinnable flexible UI. This lets you make more component prefabs such as a TextMeshPro prefab so the sprite asset only needs to be added once. Or my green outline on buttons - so I can change all buttons at once. I wish I had realized this week one. I was using crtl-D out habit to copy prefabs for the power cooldowns. Crtl-D does not make a variant just an unlinked copy. Variants inherit from their base prefab so it makes changing all power cooldowns much easier. So I spent time on this also. Please try out the game on Kongregate or TestFlight, feedback is always welcome.
    37. I am trying to use box2d on nodejs server with libGDX client.What i am trying to apply is authoritative server modal so clients are just sending input data to server, server is running simulation and returning data to clients. Client sends right key pressed input data to server,server calculates applyForce vector, applies force to server side body. Server is sending worlds body data to clients such as linearVelocity,position angular velocity etc with `sendWorldData()` function.After geting data clients equalize this data to client side bodies. Right now i just equalize linear velocity data,if i use setTransform on body for same position, it breaks the simulation and game crashes.I guess just linear velocity is way to go for now. The problem is even though i return the same linearvelocity from server to client,bodies end up on slightly different x,y positions. client is (6.8612046,7.3647866) server is (7.260152142360204,7.807573379341183) I read a lot about this problem and started by trying to fix timestep on server and client. Client timestep: private var fixedTimestepAccumulator = 0f private var MAX_ACCUMULATED_TIME = 1.0f val TIMESTEP = 1 / 60f fun update(delta:Float){ fixedTimestepAccumulator += delta; if(fixedTimestepAccumulator > MAX_ACCUMULATED_TIME) fixedTimestepAccumulator = MAX_ACCUMULATED_TIME; while (fixedTimestepAccumulator >= TIMESTEP) { world.step(TIMESTEP, 6, 2); fixedTimestepAccumulator -= TIMESTEP; } inputUpdate(delta) cameraUpdate(delta) tmr.setView(camera) batch.projectionMatrix.set(camera.combined) } Server update method: var lastUpdate = Date.now()/1000; var fixedTimestepAccumulator = 0; var MAX_ACCUMULATED_TIME = 1; var TIMESTEP = 1/60; function physics_hanlder() { var now = Date.now() / 1000; var delta = now - lastUpdate; lastUpdate = now; fixedTimestepAccumulator = fixedTimestepAccumulator+delta; if(fixedTimestepAccumulator > MAX_ACCUMULATED_TIME) fixedTimestepAccumulator = MAX_ACCUMULATED_TIME; while (fixedTimestepAccumulator >= TIMESTEP) { world.step(TIMESTEP,6,2); sendWorldData() // sends servers body data to clients fixedTimestepAccumulator -= TIMESTEP; } } setInterval(physics_hanlder, 1000/60);
    38. The fields following it aren't accessed until considerably after Bullet's world->stepSimulation function returns, though. Could that still be the reason? This is considerably outside of my expertise, and it's going to take me a while to get through a 114 page article!
    39. Hello, at first I would like to say I’m a newbie, this data is just my personal data from my games, it’s not a study of a market or something like that. Before I was releasing games only on Android, but just like 1–1.5 month ago I had released my last game “Fisherman” on IOS. To be honest I Was ready for fail (IOS version got a lot less promotion than my release on Android). Before I was not releasing games for IOS because of cost (license, devices, etc). I got ~1.48k total downloads , 189 in one day (highest), for me it’s nice, I mean, I was thinking, I won’t even pass 100. Fisherman Downloads Download Countries If we come to earnings it was $27.58 from Chartboost ads (full screen) and $14.18 from Unity Ads (reward video). Comparing IOS to Android, IOS got a lot higher earnings. On Chartboost ECPM (for Fisherman) it’s $6.30 for IOS and $1.50 for Android, so the difference is huge. I think it’s because CTR is 11.63% on IOS and 3.21% on Android. If we look at Chartboost earnings with ~5k downloads I got $38.71 earnings on Android and $27.58 on IOS (with 1.48k downloads). “Fisherman” is free to play game, no IAP, only reward videos and full screen ad (1x per ~7 minutes + players need to reach certain game level to see it). My total cost of releasing a game on IOS was ~$185 (port from Android → IOS), total earnings are $41.76 (IOS) (not withdrawable + I need to deduce tax from that cash). Like I said before, I was not releasing on IOS because costs (dev license cost ~$100 per year, when on Google it’s $25 per lifetime) + for developing on IOS you need MAC device. I just wanted to check out, how releasing games on IOS looks like. To be honest I must say that it’s a lot easier to promote the game on IOS than on Android + it’s easier to get organic downloads, earnings on IOS are a lot better. Device Type A lot of people ask how does the apple review work, to be honest, I was releasing a total of 3 games on IOS. Expect “Fisherman” game I was releasing “Mirkowanie” and “Casual Tree”. Casual tree earned ~$0.7 (47 downloads), Mirkowanie earned $0.07 (60 downloads). I’m using Unity, so I had to set few things on XCode (I had to edit info.plist, add few frameworks, add capability, and some other things). The process was easy and fast. I had been just suppressed by “Encryption Export Compliance” question, I don’t use any cryptography, but even if app use HTTPS or SSL connection I had to check “YES” (so if app got ads or use GameCenter, some API, we need to check “yes”). After It, I got 3 of my games rejected by Apple (description was suggesting, that players can get real cash, to be honest, I never had that purpose, I had change description, I got rejected again, then I had again changed description, then 2 of my 3 games got accepted. For the 3rd game I had to appeal (It got rejected because it was similar to others), after a few days my 3rd game got accepted. Download types I know what is Reddit and TouchAracde, iosgods is linking to “hacked” version of my game (with high cash), to be honest I don’t got problem with it, it’s extra promotion. Check out my game: IOS Google Play Amazon Store And my social media: Facebook Twitter e-mail newsletter Now I’m working on Yerba Mate tycoon game for Steam, I take a break from Mobile markets ;P Not sure if this data is useful for any1. Also, it don’t mean that you won’t earn cash from your game/app because, I didn’t earn it (there are games/apps which earn cash, and there are apps/games that don’t, it’s normal). Feel free to ask questions. Threat this post as a “curiosity” :-} Earnings and stats from my other games
    40. JAG-Robert Hashman

      Jaunty Ape Games - Modular Sci Fi Gun Kit

      If you would like to see features, functionality, or anything added to this kit, let me know! My initial ideas for an upgrade would be : A.) Polish the Diffuse Textures B.) Add Mobile Shaders C.) Additional Assets per category. This would be a free upgrade after I launch my "Desert Creator Kit". What would you add, subtract, change?
    41. I'm sorry. I was trying to show examples of a beat em up game. It was to show that beat em up games can still be fun and still use plenty of moves to fight enemies without slowing down the intense gameplay. What I would like to do is make it based off the action used in side scrollers and update it somehow into a more 3d world like DMC style. See how the combos are used against enemies and how many different moves can be performed? This is the idea I have but more like something in God of War where you can perform all these moves and still keep the atmosphere of the game going where the player isn't overwhelmed with trying to memorize move sets which would be difficult when surrounded by enemies. Maybe have a special kind of input command when the player hits a special move on screen where the MC performs that move with like just like 2 buttons? I'm apologize I'm not very good at explaining this. If this is something I really want to do, how could I make it so it still has that great fun factor and doesn't get repetitive where you just from onstage to one bad guy to the next?
    42. Sounds good. But without intervals, what would trigger a poll? After a client fires a command? A bunch of commands are collected over time and after a certain amount of commands or time a request to the server is made? You would under normal conditions expect a realtime and probably fixed interval. Either the server pushes change events, or you push/pull states. But you can allow for it to be OK for an interruption to occur and for it to quickly continue, if the client state is small enough. I never tried something like this though, and its just a thought. Even MMORPG I have personally played relied on a consistent connection and would drop the player to the login screen if connection was lost. As I said, more like a webpage/app. An instant messenger for example doesn't care about "intervals" it cares about a "post message" command, the ability to give a client when they load all the previous messages (the state) and a way to inform the currently connected clients of a new message (probably some sort of push event, but if connection is lost it might go back to loading the full state when it connects again). This is a lot less realtime simulation, so it depends on what you are doing exactly, if you want to move an army from one tile to another, and it says it will take minutes, even hours, you probably don't need or want to actually process that at 60Hz or even 1Hz. I believe for example in EVE Online, features like skill training and industry are a lot more like this. You tell the game to add/cancel/etc. an industry job, change your skill queue, etc. and then there server just schedules an event (probably backed by a database) saying that its complete. It doesn't process every skill, job, etc. every tick. For push events over HTTP I would use a WebSocket which is pretty much like a normal TCP socket with some extra's. HTTP2 push is still part of the request, its more like if there is a "GET /blog-post", the server can respond with the document, but also be like "you probably want this image at the start of the post", to save a second request (for that <img> tag) and speed up loading. If your relying on lockstep determistic simulation to keep states in sync, that is just a flat out desync. You can see it in various RTS type games, it normally drops the player or even the entire match. If it can recover at all, its normally by effectively "rejoining" and transferring the entire "save file". If your relying on the server to tell the client its wrong, you get the "why he has 15 bananas after the update.". I have definitely seen it in say Minecraft (doing something like removing a minecart track just ahead of a fast moving cart, stopping it, the server gets your block change only after its copy of the minecart entity passed. After a few moments when the server syncs the nearby entities, your minecart teleports to the servers location). Yes, the "ambush" event would need to tell the client all the information it will need to display to the user. The point is the client had no way of knowing it would happen ahead of time. The client isn't running that part of the simulation and doesn't have that data. Again to use a website example, consider that the server knows every page on the site, but the client only knows the open one. When you "click a link" you have an idea of what you expect to get, but until you actually click it you don't know for sure. EDIT: To be clear, I am thinking your overall goal maybe has two parts. A strategic part with a large number of players and the need to let players come and go as they want or as connection issues occur. Actions take a long time (minutes-hours) and there is a lot of things going on in total. But a single player can only see a small amount, and can only directly control a small number of things. It seems to me for this the server can run the simulation only, and players can just see and interact with their individual "pages". A more traditional RTS "match" for combat, with a small fixed number of players and a lot of moving objects (100's, maybe 1000's if you include projectiles, etc.). Transferring the state for so many objects frequently requires a lot of bandwidth, which is why many such games use a deterministic simulation and keep it fully syncronised. Probably practically two games code wise.
    43. Tom Sloper

      Control Conflict ARPG/Crafting

      My vote is for solution 2. On the place where users can change the configuration, state the pros and cons for both configs.
    44. Peanutsage, could you please state your argument in words rather than videos? At least give us some inkling of what point the videos make.
    45. It's already in that forum (I moved it after I said I was moving it).
    46. What I don't understand are the different time-vectors. The server has one, and the client needs one/the same as the server. (A fixed update step like the server has I presume?) To address your last paragraph first: Do I get this right, that I can't let the client run and calculate its gamespeed by just it's fixed FPS of 60, even though he has sees only a simulation and only sends commands to the server who's holding the actual gamestate, because a farmhouse might produce on a fast device 20 bananas, where on a slow device with varying framedrops only produce 10 bananas, while the server calculates only 15 bananas can be really produced. The player/client would take either 20 or 10 bananas out of the farm and wondering, why he has 15 bananas after the update. Sounds good. But without intervals, what would trigger a poll? After a client fires a command? A bunch of commands are collected over time and after a certain amount of commands or time a request to the server is made? Server push could be a good way, if one player commits his commands, server pushes updates to the others? Server push would work with this https://en.wikipedia.org/wiki/HTTP/2_Server_Push, right? Sounds good too! The part with the "ambush" isn't entirely clear to me. If the server reply with "ambush", the client would than need to react to it in form of prettiness, right? Thanks!
    47. renanpll

      LOOKING FOR UNITY 2D PROGRAMMER

      Hello, I'm interested in helping you, I don't have professional experience but I have some personal projects, and I've made a lot of online courses and tutorials. I have experience as a programmer, but not in the game field. I can't speak spanish, but I can speak portuguese and english.
    48. Hello! I am looking for an experienced programmer in Unity 2D to make a Metroidvania-style game with touches of stealth. Important points: - It is not renumbered, but if we get some money, it will be shared - It is a project to do in our free time, with a little consistency and without abandonment - Being able to speak in Spanish is valued
    49. AlienplayGames

      Fling | Postmortem

      Hello everyone! Fling has been released more than a month ago so I decided to share some of my stats from different platforms and my experience publishing there in the format of a postmortem. First of all, here is some basic info about Fling: I started working on it on 28th of December 2018 I started doing devlogs on GameJolt on 1st of January 2019 Game was released at different times on different game portals, but first public version was out on 28th of January 2019 on Itch & GameJolt Based on feedback I got from all different game portals I published Fling on I drew the following conclusions: What went right? One month deadline I'm really happy that I managed to stick to my original 1 month deadline for main part of my project, I needed some more time to properly integrate Kongregate, Newgrounds and GameJolt APIs, but at the end it was very close. This goal helped me keep my project in scope and it gave me the feeling that everything will be worth it in the end. I think that one or one and a half months is ideal time span for the types of project that I’m currently focusing on so I’ll keep trying to stick to this schedule for my future projects as well. I improved as a game designer As my first larger project it was pretty scary to even start making Fling. I think the thing that really helped me out with that is prototyping my ideas before committing to project. Prototyping is something that I think most game devs know they should do (myself included), but we never actually do it. It’s easy to think that the first idea you get is the best one, but in my experience that can’t be further from the truth. My level design process My previous games were either one level or endless runner types of games, so figuring out how to do level design was big part of this project. Luckily, Mark Brown from Game Maker’s Toolkit made some awesome videos on this subject. Here are the ones that helped me out: 4-step Level Design of Super Mario 3D World Mega Man 11's Levels Design These two videos were great food for thought, especially the first one with its 4 step “formula”. For my game, I wrote down in notepad all of the game mechanics that came to my mind that can synergize well with Fling’s main mechanic, which is traversing environment using only your grappling hook. Some of the ideas that I wrote down were good, some of them weren’t, but the most important thing is to keep thinking and keep brainstorming, some cool ideas will come eventually. After doing this I decided that I wanted to make 30 levels for Fling. So, in order to make the things easier for me I broke that down into sections made up of 5 levels each. Every section introduced one new game mechanic and my idea was that this will help players to master the grappling hook mechanic over the course of the game (it seems like I didn’t managed to achieve this, but hey, I tried). In order to get inspiration for my levels I first came up with the name for the each level. This is something I heard that Tim Ruswick, from Game Dev Underground, uses in his games, and it worked quite well for me so I’d definitely recommend it. Version control There’s not to much to talk about here. I knew that I should use some sort of version control for my projects in case that something goes wrong, but this was my first time doing it. It helped me out a lot, especially later on when I had different versions of Fling for different game portals and with different APIs integrated. Promotion/marketing This one was big for me. I didn’t actually count how much time I spent on promotion/marketing but I think it took more than 30% of the development time. First off, I started my devlog page on GameJolt. After a couple of days I realized that GameJolt promotes your page more if you do devlogs regularly, that helped me to reach around 300 views on my page before I even published the game. Besides that I also got some followers on GameJolt which will help me with my long term goals. Besides that, I also figured I’d publish my devlogs on Itch Community Forum. I’m not sure if this had any substantial impact but in the end I reached around 100-200 views on Itch before publishing. The one thing that surprised me the most was that forums are great way to reach people that can help you throughout development. In my case, I was active on TIG. On there I reached around 800-900 views before publishing Fling and I think it played a big role in how successful my game was. So, what is the main takeaway here? Start promoting / marketing early. It doesn’t have to be anything more sophisticated that a few GIFs here and there (at least in the beginning). The point it to make people aware and interested in your game. What went wrong? Tutorial Tutorial is probably the most important part of your game. It teaches player how things work inside your game and it sets the expectations for the whole experience. If your tutorial is frustrating people will most likely think that your whole game will be the same and they will most likely give up before they even learned how to play. I managed to make Fling’s tutorial hard for a lot of players. It was interactive so the problem wasn’t that people didn’t want to read through big paragraphs of text (like you do now ), the problem was that I layed out first level incorrectly which, as a result, made it harder for players to reach the end. The second part of the tutorial was at the level 4. Here, I tried to teach players how to swing. My mistake here is that I didn’t give players proper feedback on how many times they need to swing and that made the experience frustrating for some players. This could have been easily fixed just by putting a counter that displays the number of swings you have left before completing a level. Just make the tutorials as easy as possible to follow, make them and optimize them for completely new players. People who have never seen your game. Also, give players proper feedback because that’s one of the reasons games are fun in the first place. Players want to see when they make some progress so make sure they know how far they’ve come. Music There’s not too much to talk about here. First off, I tried using Bosca Ceoil and I couldn’t make anything good enough. Then I tried drumbit (online tool for music creation) and I managed to put together something OK. I didn’t enjoy this process at all and I’m pretty terrible at making music so the thing I’d do differently next time is I wouldn’t make music myself. There are a lot of free resources online to find awesome pieces of music for any type of game. For my next project I decided to try out Jukedeck and it already sounds a lot better and way less repetitive. Level design mistakes As I said previously level design was something I was overwhelmed by, so it comes as no surprise that I made a lot of mistakes along the way. Some people thought levels were designed well and some people didn’t share the same opinion. Which is fine. I can’t cater to everyone. However, I think that I can improve my level design technique a lot for my next game. Will definitely let you know how that goes once that game is done. Problems with Unity WebGL The last problem I’d like to mention here is Unity’s WebGL. It doesn’t work all that well in my opinion. It takes a lot of time to export, around 10-15 minutes in my experience which is a lot more than it does for Android or Windows (around 1 minute). Obviously, this makes it difficult for me to update my game when I have different versions of it for different game portals. Also, loading takes 10-20 seconds and it always seems like it freezes at 90%. However, Unity seems to be looking more into HTML technology lately with their preview package called Unity Tiny and option to export to WebGL using Web Assembly standard. So hopefully these issues will be less and less noticeable over time. We’ll see. Stats (3/7/2019) Armor Games: 38K plays (68/100) Newgrounds: 3.7K plays (3.42/5) Kongregate: 5.2K plays (3.1/5) GameJolt: 700 plays, 1.5K views (95% positive) Itch: 1.1K views (4.4/5) Game Distribution: 200 plays Here are some of my thoughts and opinions on platforms listed above. Armor Games Where to even start here. Armor Games was obviously a huge part of this project and most of the plays Fling got were from their web portal. They are very supportive of indie game developers and even though they handpick games that will appear on their website they are not afraid to take chances with more experimental games. Besides promotional benefits they also offer various financial benefits as well. In my case that was $200 for a branded non-exclusive license, but I’ve seen some games go for more than that. It depends a lot on a type of game how much they think it’s going to be successful. Newgrounds Newgrounds is awesome web games portal and as one of the first big ones they had a lot of time to perfect their trade. On Newgrounds your game is almost guaranteed to reach a few hundred people. This might not seem like a lot but trust me, the feedback you get from these players can really go a long way. So, why am I mentioning this here and I didn’t say the same for Armor Games. Well, as I said Armor Games handpicks their games and if you’re just starting out you probably won’t be able to make your game good enough for Armor Games (like one of my previous titles). On the other hand Newgrounds lets you publish whatever you want on their platform. This can help you gain a lot of valuable experience as a newcomer. To promote you game Newgrounds has systems like their P-Bot’s Daily Picks. Basically this bot picks 5 games/movies every day and places them on the side of the front page. As you’ve might guessed this can help a lot, and it did with Fling. It was placed second on the day it launched. Also, Newgrounds offers their API that includes medals and leaderboards as well as some other stuff. This can help you extend the length of your game and offer additional challenges for some of your players. Kongregate Kongregate is another giant of web games industry. They offer different ways to promote and monetize your games. On Kongregate you earn ad revenue from your games and you can increase your slice of the pie by integrating their API or by making your game exclusive to their website. Anyhow, their CPMs are quite good so ads can be a nice source of revenue. Another great thing about Kongregate is that they hold monthly contests. These contests reward 15 best games of the month with certain amount of money. Surprisingly, Fling won 15th place for the February and the prize for this spot is $250. Of course if you get higher on the list you can earn more than that. Anyways, I’m really happy for this result. GameJolt GameJolt is platform that doesn’t exclusively focuses on web games but it’s still a viable option. Devlogs I wrote here helped me get some followers for Fling early on and it definitely helped me with launch. It’s also good that they give you option to integrate their API into your game and reward your players with medals (or, I think they call them trophies on there) and spots on leaderboards. Itch Itch is pretty similar to GameJolt. It doesn’t offer API integration (as far as I know) but I think they offer you more ways for your game to get discovered. It didn’t do all that much for me in this instance but like GameJolt they offer people a way to follow you and Itch also has a quite big Youtuber community and both of those things will help me with my long term goals so I’ll keep publishing my future games there. Game Distribution Huh, I was honestly very disappointed to see that Fling did this bad on GD. They have very bad CPMs, in my experience, and their platform started getting cluttered with simple, mostly low quality and low effort games which definitely won’t help your game get discovered. So in the end I decided to stop using GD altogether for my future games. In the end I wouldn’t call Fling a success but it wasn’t a failure neither. It was my first larger project that I’ve actually taken seriously and I learned a lot in the process of making it. This was also my first time writing postmortem for one of my projects so I hope it's informative and helpful. If you read through this whole postmortem you deserve a medal for your efforts. XD Thank you so much for reading! If you have any feedback regarding my writing skills you’re welcome to let me know. Thanks in advance. If you're interested in playing Fling you can find links on this page: https://www.gamedev.net/projects/1206-fling/
    50. Sold - Thanks for a quick and easy transaction GoliathForge!
    51. komilll

      SSAO black dots

      Changing multiplying order of "mul(matrix, vector)" doesn't change anything. Also I've tried reversing TBN matrix and other combinations and I can't find any visual difference after doing it. Do you think my kernel generation or usage might be wrong?
    52. AlienplayGames

      Link It Up! | Feedback needed!

      Hey everyone! I'm close to launching my web game Link It Up! and I'd really appreciate your feedback before I release it. Link It Up! is a puzzle platforming game in which you need to link up the line in a way that allows you to reach the end of the level. It's a web game so there's no need to download anything to play it. I'm looking for feedback regarding my game's learning curve and level design (how difficult it is and are there any difficulty spikes) You can try the game out here: https://alienplay.itch.io/link-it-up Password is: e3Sgz% Thanks in advance! 😁
    53. Afelium

      First Composition

      If you know better forums to improve in music composition,please tell me
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!