Jump to content
  • Advertisement

HunterGaming

Member
  • Content Count

    52
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by HunterGaming

  1. HunterGaming

    Unreal Engine 4: Level Streaming Demystified

    Little update I just found out. It wasn't spawning the player because I didn't set the game mode overrides for the persistent level. However the player character still doesn't seem to be placed at the player start. I still have to move it to there.
  2. HunterGaming

    Unreal Engine 4: Level Streaming Demystified

    So I have finally got some level streaming to work in the project I'm working on. The next blog might be progress on it. But for now I want to explain quickly how level streaming is designed to work and how to get it to work for streaming just a single level. I have a small level that is too small to be broken into smaller pieces but large enough to take few seconds to load it. Like a lot of things the official docs are good but doesn't help for situations like mine. Level streaming is normally used to load and unload one level into another level. Making it easy to have large levels broken into pieces. You have just a small, whats referred to as a persistent level, to start and load other levels into and out of your persistent level as needed. So you set up a trigger so when the player walks through another part of the level is loaded. Is it a process that can be seen so you must take care to make sure the player can't see that level until its completely loaded. You have the option to load the level asynchronously or not by checking Should Block on Load. In order to set up level streaming you must add the level you want to stream to a list of levels. The level that is currently open at this point will automatically be chosen as the persistent level. The level that is currently loaded will automatically be selected as the persistent level. Once there you can click the Levels drop down menu to either create a new level, or load an already existing level, to add to the list. Levels added here will be the sub levels you want to load. For me right now its just one level called Downtown_L. Now there is a lot of good tutorials and documentation available on the internet but they all explain it from a standpoint of having large levels broken into small levels and loading/unloading as needed. There is not much out there explaining from the standpoint of a single level that is too large to just load using OpenLevel because it takes too mush time to load and blocks the main thread until its done loading. Which I think is where a lot of one-man-band indie developers are coming from as being the only person working on a game limits,somewhat how large levels can be. Unless your willing to spend large amounts of time on it. So how do you go about using this technology to load smaller single levels? Well what I did was create a completely empty level to use as the persistent level. So it loads super quickly. In begin play of that persistent level I show a loading screen. I should be able to eventually make the loading screen animated as level loading shouldn't be a blocking task now. After the loading screen is shown I immediately call LoadStreamLevel to load my single level into the empty level. Now it work. The empty level is loaded super quickly and shows the loading screen. Which currently is just text that says loading. But it stays there as the level is loaded and is removed once the level is finished loading. As its not blocking and I don't yet have a loading screen that blocks the whole screen, I can see the level being put together. It's kinda cool. I will be updating my loading screen next to make sure it blocks the whole screen and looks pretty to the player. Here is my begin play from the persistent level's level blueprint.
  3. I have been working on a new game. This one I'm going to be using mostly C++ in this one. I try to add something in each new game I work on that I haven't done before. This time its changing the input bindings at runtime. A lot of searching turn up a lot of old and not very useful information. So I figured I would provide a working way to do this without having to spend hours trying to find good and current information. So here it goes. First the main class used for altering input bindings is UInputSettings. The key functions being RemoveAxisMapping, AddAxisMapping, RemoveActionMapping, AddActionMapping and SaveKeyMappings. We can create an instance of the class like this UInputSettings *Settings = const_cast<UInputSettings*>(GetDefault<UInputSettings>()); Then its easy to add or remove axis and action mappings. Settings->RemoveAxisMapping(FInputAxisKeyMapping(AxsName, FKey(*OldKey))); Settings->AddAxisMapping(FInputAxisKeyMapping(AxsName, FKey(*NewKey))); Settings->RemoveActionMapping(FInputAxisKeyMapping(AxsName, FKey(*OldKey))); Settings->AddActionMapping(FInputAxisKeyMapping(AxsName, FKey(*NewKey))); And when you're done just save the changes Settings->SaveKeyMappings(); Here is a function I am using to update an action mapping. You must remove the current mapping or both will exist. If the current key to jump is space and you change it to J, if you don't remove space the player can then hit either space or J to jump. void USurvivalGameInstance::UpdateActionMapping(FName ActName, FString OldKey, FString NewKey) { UInputSettings *Settings = const_cast<UInputSettings*>(GetDefault<UInputSettings>()); if (!Settings) { return; } Settings->RemoveActionMapping(FInputActionKeyMapping(ActName, FKey(*OldKey))); Settings->AddActionMapping(FInputActionKeyMapping(ActName, FKey(*NewKey))); Settings->SaveKeyMappings(); }
  4. HunterGaming

    Dev Blog - Space Defender HD: Turrets

    So I'm now finished with a basic firing mechanism for the turrets. They target, shoot at and kill the enemy ships now and add money for each kill. I ran into an issue with aiming the turrets at he enemies. The turrets wouldn't turn correctly and and there were a few issues with the aiming that I had to work out. I have a collision sphere around each turret that detects when an enemy enters and leaves its radius. I keep a list of the enemies that is within each turrets power radius and so far have one algorithm for finding the enemy in the list that is closest to the base. I will be adding 2 more algorithms one for strongest enemy and one for weakest so the player will eventually be able to choose between the two. I ran into a an annoying bug that took a while to get it working right, turrets would turn too slow and not get all the way to the targeted enemy but here is what I ended up with that finally seems to work good. After the rotation I do a quick line trace to determine if there is an enemy ship in front of the turret. This was probably the hardest to figure out and get it working correctly. All that is left is to pause turrets when the game is paused, subtracting health when the players base is hit and adding 20 rounds. Then work out all the kinks to get it all working together smoothly and make it fun and tricky. Then I should be about ready for a 1 level demo. http://www.hunter-gaming.com/ https://www.facebook.com/indiehuntergaming/ https://twitter.com/HunterGamingInd
  5. HunterGaming

    Dev Blog - Space Defender HD: Enemy Spawning

    Another milestone is complete. Basic enemy spawning is finished. When the game loads the player will have unlimited time to set up turrets (still a little work to do here) and can then hit the play button to start the game. After that the player can pause and resume or restart the game. This functionality is done and so far I have the game choosing between 2 enemy ships randomly to spawn them. The basic run down of how the game will work is enemy ships can come from anywhere along the edge of the screen. Which screens will depend on the level but will always come from at least 2 edges. The enemies will move towards the players base and once close enough will shoot at the players base damaging it. I have both the movement and firing at the players base completed. Most of the work is done in a base class so its easy to add a new enemy. This is a screenshot of actual game play. I am getting closer to having a playable demo ready. Below is the main part of the spawn controller I created to manage all the aspects of spawning. It allows me to easily start, pause, resume, and restart spawning capabilities when the game starts or when the player pauses and resumes or restarts the game. At the bottom left is Choose Random Available Enemy which will allow me to choose enemies that have been unlocked. Now that I have this complete my next step is to get the turrets working. The player can already drag and drop them into the level so I just need to implement their functionality. Once this is done I should be able to have a playable demo ready. I'm sure there will be a few bugs that will need to be flushed out as I go but things are going good. http://www.hunter-gaming.com/ https://www.facebook.com/indiehuntergaming/ https://twitter.com/HunterGamingInd
  6. HunterGaming

    Dev Blog - Space Defender HD: Enemy Spawning

    Thanks. I was able to find some good HD assets to use. I've spent more on the UI for this game than my first 2 combined. I can't wait to have a playable demo for people to try it out.
  7. So I have finished the basic drag and drop to place various turrets in a level. This was easier than I thought it was going to be. But I'll give a rundown of what I did and how its set up. All I have to do is make it prettier. I'm going to make the default color very transparent and have some sort of color or material to make it look good. Then when the player drags a turret over a spot that can have a turret I will change the coloring and/or alpha to highlight which spot the turret will be at. The basic overview of UE4's drag and drop functionality is to override the OnMouseDown, OnDragDetected, and OnDrop functions and create a UMG widget to represent the item being dragged. That's about all there is to it. So I will get into the fun stuff now. There is a more in depth tutorial I followed that made this a little easier to understand. You want to override OnMouseButtonDown and OnDragDetected in the widget you want to drag. In my OnMouseButtonDown I first check to make sure the turret has been unlocked before dragging. This prevents the player from dragging a turret they have yet to unlock. Then we set an offset that will be used to offset the drag image from the mouse/finger. Then chose which input you want to listen to for dragging. I chose left mouse button as that is a normal drag and drop behavior and I also have my settings to map clicking to touching so this also works on mobile. As far as I know that setting is on by default. But if you want to make sure in Project Settings -> Input then find Use Mouse for Touch or just search for Use Mouse for Touch. Also in the widget you want to drag I overrode OnDragDetected which handles what to do when the system detects a drag has started. Again I make sure the turret is unlocked before continuing. Then create an instance of the widget you want to use to represent the item being dragged. For me its just an image of the turret slightly larger and with a small alpha applied to make it look a little different. Then using the CreateDrag&Drop function we create an instance of a blueprint we have to create that extends DragAndDropOperation. The Default Drag Visual is what the system will use as the drag continues. And the Drag Widget is a hook to the widget you actually want to drag. And this is it for the drag part of the operation. Now you must override the OnDrop function in whatever widget/HUD you want the item to be dropped in. I have a separate widget I'm using to handle the dropping. This allows me to place these where I want the player to be able to drop a turret and anywhere there isn't one, the player wont be able to drop it there. I set the locations in another place where I can manage each of the drop widgets in one place. So I spawn a PaperCharacter as the turrets will eventually need to spin/move and have an AI. Then I hide the drop widget so the player can no longer drop a turret there and return true to indicate the input was handled. And that's it for the basics for drag and drop. You look at the tutorial I linked to above for more detailed information but this should be enough to spark some ideas on how to use it in your project. After I make some minor visual changes to the dragging and dropping I will then move onto creating the first enemy ship and a spawning capabilities so I can put together a first demo level for people to check out and play. http://www.hunter-gaming.com/ https://www.facebook.com/indiehuntergaming/ https://twitter.com/HunterGamingInd
  8. HunterGaming

    Dev Blog - Space Defender: Unreal Engine 4 Drag and Drop

    Of course I figured this may be helpful for a lot of people so I thought I would share.
  9. First of all I want to apologize for the extended delay between posts. There was a medical emergency in the family I had to attend to. But now that its almost taken care of I can get back into development a little more. I now have a main menu mostly finished and I have created an in game GUI and started on building up the first level. The base you must defend for this level will be in the lower left corner of the screen. I will also be adding areas where you can place turrets that will shoot down enemy ships. My current plan is to have the enemy ships start anywhere at the edge of the screen opposite of where the base is. So for the first level the enemy ships will be coming from the top and right edges of the screen and fly a straight line towards the base. If the base is in the middle of the screen enemy ships can com from all 4 edges. So far I only have one turret created. My next steps will be to create a pause menu for when the player hits the pause button. The player will have the options to quit, resume, adjust sound and fx volume and restart. Then I will move on to creating an enemy ship, add the ability to drag and drop a turret into the level, then begin adding the game play and spawning enemy ships and get the level mostly working. Once I get to that point I'll be providing a demo to get some feedback on the game so far. I wont be able to get as much done as I previously did for a while but I will be continuing development as I can. http://www.hunter-gaming.com/ https://www.facebook.com/indiehuntergaming/ https://twitter.com/HunterGamingInd
  10. HunterGaming

    Game Development Update - Space Defender: First Look at a Level

    No this is not part of the Tower Defense Challenge. Its a separate game project I'm working on unrelated to that challenge. I haven't picked a name for the game yet so I'm just calling it Space Defender for now.
  11. This is the first real update for my latest game which I think I may just call Space Defender. However that may change. It will be a tower deference type of game however where you have to defend your space station from waves of enemy ships. This one will be a mobile game and will be available for sure on Android and hopefully iOS as well. I'm not very far into the development process yet but the main menu is almost complete. I just have to add a level selector screen. Then I can move on to creating the levels, enemies and turrets the player will use, then the levels. Lets move on to a few pics of what I have so far. The main menu has 2 animated turrets that are hard to see in this image but they are circled in white here. The background does have faint stars that are also hard to see in this image. I'm planning on having the level selector animate into view somehow on top of the main menu once I have the level selector completed. Not much to say about the next 3 images. The main menu buttons slide to the right off screen when either the options or quit dialog slides into the screen from the right. The options also shows the languages I plan to support when its released. So this should give you a good overview of the direction I'm going with this game. More details to come as I get more completed. other games: www.hunter-gaming.com facebook: https://www.facebook.com/indiehuntergaming/ twitter: https://twitter.com/HunterGamingInd
  12. HunterGaming

    New Game Announcement

    This will be a short update just to announce a new game I will start working on now that Mine Seeker is complete. I'm going in a different direction with this one. Its going to be a mobile game. I'm planning on releasing it only for Android for now. I don't have a name for it yet or any pics as I have just finished the planning phase and know what I want the game to be and what to put in it. Its going to be an AR tower defense kind of game based in space. The player will have a base to defend their base against waves of enemy ships that want to destroy it. I was just about to create a new UE4 project for it but I figured I'd make a quick blog about it before I started giving regular up[dates on it. I am undecided on releasing it in the Amazon app store as well. Not sure if it will work as I plan on using Google Play achievements and Kindles have their own version of Android that doesn't have Google Play installed by default. So I'm going to try it and see it it works and it it does I'll release it in Amazon too. Has anyone release an app or game on the Amazon app store before? Let me know your experience with it. www.hunter-gaming.com www.facebook.com/indiehuntergaming twitter.com/HunterGamingInd
  13. HunterGaming

    New Game Announcement

    Yes my first mobile game and first attempt at a tower defense game. I have started working on it and almost have the main menu finalized. Once I do I'll be making another post with some pics.
  14. HunterGaming

    Mine Seeker

    Mine Seeker is a game of wits, speed and a little luck. A new puzzle game where your goal is to clear all the tiles, except the ones that have a mine. If a tile has a numbered space, that indicates how many mines are adjacent to that tile. This allows you to clear the tiles while trying to figure out where the mines are. However you are also timed and must be quick in figuring out where the mines are to avoid exposing one and making it explode. With 180 fun and addicting levels with increasing difficulty, its sure to keep you guessing for a long time. A scoring system that keeps track of your scores and number of stars for each level. There is also a quick play for a more casual environment that lets you select a difficulty and is not timed. Don't forget about the 24 achievements you can earn.
  15. HunterGaming

    Mine Seeker Steam Achievements and Testing

    Steam achievements for Mine Seeker are now complete. I will for sure be including these in all games going forward. Along with Cloud game saves and other services Steam offers now that I am more aware of what all they have to offer. Integrating with Steam was a particularly rewarding experience. I currently have 24 achievements players can earn. I had 30 but some were either not good or didn't fit the game well so in the end I actually removed some. Still a good number to keep people busy. So this screen shot says 9 of 30 achievements but its 24 now. But now that the hard work is done I now will be putting together some marketing materials, not very good at this part but I do my best. I've also learned a few new things so I'm looking forward to applying them and see if it has an effect on my sales. I'll be making a video, a bunch of pics and descriptions, etc. Once I have this together I'll be uploading the game to Steam so I can more easily have people test the game. I didn't know this until a couple days ago but its a bit of a pain to get the game running without Steam's assistance installing dependencies. So once I get the game up on Steam, hopefully in a week or so, I'll be reaching out to testers, bloggers, YouTubers, etc to see if anyone has an interest in testing, reviewing, or talking about my game. I also heard of a service I've never heard of before, keymailer. They help put game creators in touch with streamers so I signed up to check it out and see what it involves. So if anyone has any experience with them, good or bad. I would love to hear about it. Also I will be passing out Steam keys for the first time so if anyone has any tips or suggestions on that it would be greatly appreciated.
  16. HunterGaming

    Mine Seeker Steam Achievements and Testing

    Good read thanks for the info. I'll give them a try and see how it goes.
  17. HunterGaming

    Second Mine Seeker Demo Ready

    I have another Mine Seeker demo ready to try. There are a few new things I added since the last demo. I updated the UI a little bit to allow me to translate the text in my game. Here is a photo of the new font I'm using. And as mentioned above I also added localization's to the game. The game is fully translated into each language in the list. The player can change the language the game uses if they don't want to use the native language of their system. I also added a new world called "Desert". It has a total of 20 new levels bringing the total now to 40 levels. Each level is dynamically created so its a different experience each time you play a level. Again I'm asking people to play and let me know your thoughts on in. You can contact me through my website, or here in the comments or email me support@hunter-gaming.com.
  18. Since the last demo I have added another 4 worlds each with 20 more levels. Here are a couple pics of 2 of those worlds both medium difficulty. Three of them have more tiles and mines making it more difficult. So now there is a grand total of 6 worlds available. I have three more to add which will be even higher difficulty. All I have left now before I can start doing some alpha testing is add the three higher difficulty worlds and add some Steam achievements. This will be the first time working with Steam achievements so I'm looking forward to it. I also want to talk for a moment on Localization in UE4. It's simple but time consuming to do. Please remember UE4 localization only works with Text, not strings. There are some tutorials I found on the internet but they were for earlier versions of the engine so they were out date and weren't all correct. Here is the Localization Dashboard. I'll highlight the important areas to add localized text to a game. Its grayed out because my VCS marks files as read only until I check it out to edit. The important areas are Gather Text and Cultures. You can choose 3 different ways to gather the text in your game. I'm using Gather From Packages so I can choose the directory in my game content that has the UI. It will search the folders you choose here. Just click the `+` for Include Path Wildcards to add a path you have text you want to localize in. You can also add paths to directories you want to exclude as well. Just a note, by default all 3 ways or gathering text are disabled, so if you don't check one if the 3 top level check boxes under Gather Text, it wont find anything. The other important area is Cultures. Here is where you actually choose which languages/locales you want to support. You can be specific like en-US or en-GB or generic like en or es. I'm not targeting any specific locales in the languages I'm supporting. You cant see it in this image but under the list of languages, which is empty when you first start, is a button Add New Culture. Using that button you can select all the languages and locales you want to support. One language must be selected as the native culture, here I chose English and there is a mark next to English to show that its the chosen native culture. I believe this is telling the engine to use the native language if your game is being played in an area that doesn't use one of your chosen languages. When your ready just hit the big Gather Text button to search your game for text. It should then show you the number of words, haw many have been translated and the bar will represent a percentage of what is complete. Mine are all complete. Then to edit the translations just click the little button immediately to the right of the orange bar, when you hover over it, it says Edit translations for this culture. My translation are all in the completed tab, but when you first start they will be in the Untranslated tab. The left shows the word in the chosen native language, and right shows the appropriate translation. Simply click the box on the right to add the localized version of that text. When the game runs in this language, these translations will be used in place of the native language. When your all done just hit the big Compile Text in the Cultures area. There is an issue currently where after doing this it doesn't update to show what has been completed, so to update hit Gather Text again and when that is finished it should show an updated overview of how much you have completed.
  19. HunterGaming

    First Mine Seeker Demo Ready

    I am finally ready to release the first demo for my next game Mine Seeker. I ran into a bunch of issues with gitlab, which I was using to host my code. They did an update and I lost the repo for this game. Thankfully it hasn't been released yet so I was able to create a new repo and migrated the code and issues to the new repo. Then I ran into issues pushing my code up to gitlab. I was unable to resolve that so I made the switch to Perforce. I've never worked with it before so there will be a bit of a learning curve as I go, but I have it set up so I can change files and submit them to the depot. I lost about a week maybe 2 because of this. On to a brief overview. The game play is similar to Minesweeper. You have to click tiles and try to avoid clicking on a mine. The first area of 20 levels is available in the demo. I plan 8 more each with an increasing level of difficulty to make it harder as you play. If you click on Quick Play you will be able to choose your difficulty and a game screen will be show. The Quick Play is similar to the original Minesweeper except there is no time or scoring. Clicking on the Play button will load the single player adventure with (eventually) 9 areas of 20 levels each. So far I have 1 area with all 20 levels. Choosing the Play button will load the level selector screen. Each area is divided into 2 sections. This shows the second section of the first area so these are levels 11 through 20. The next and previous buttons will take you to the next and previous worlds if available. Click on a blue level button and the game will load. If the button is grey the level has not been unlocked yet. You must complete a level before the next one is unlocked. Here is a quick look at the game screen. The buttons I think are fairly self explanatory. The score of the game starts at 1000 and decreases over time plus you get 1 point for every tile uncovered. It tells you the number of mines remaining as well as how much time has passed since the game started. So because of the git issues I currently only have the windows demo available. I will add the Mac version as soon as I figure out how to get my Mac to connect to my Perforce server to checkout the code. If you have any suggestions, ideas, comments or issues of any kind let me know. You can either comment on this post, email me at support@hunter-gaming.com or contact me through my website. See my next blog post for an updated demo.
  20. HunterGaming

    Performance and Delay Nodes

    So I ran into my first real performance issues now while working on Mine Seeker. I've played around with UE4's performance analyzing tool Session Frontend before while developing Farkle Friends to make sure I was running good. I never ran into problems that I had to investigate until now. I am working on a level generator and it was coming along good. However I was seeing the UI lock up for 1 to maybe 4 seconds while the generator was running. I have a each, medium and hard quick play difficulty and there is no issue on easy, but there was about a 1 second delay on medium and maybe 3 to 4 second delay on hard. So I opened the Session Frontend and started to dig in. I was able to track down 2 performance issues with my code. One was an issue with the level generator and the other was a different issue causing a big cut in the FPS I was running at. The first issue I just happened to find while investigating the level generator issue. And it was causing a big drop in FPS that I MIGHT not have been aware of otherwise. In the quick play screen I was running a quick piece of code in the tick function that is called every frame. I was updating the UI with information the user needs. What I found was this code was taking up quite a bit of time. I was calling a function that I previously created that will take a number and return a array of Slate Brushes which allows you to apply textures or sprites to an image and display it on screen. To figure out what number was passed in I convert the number to a string array. That conversion every tick was having a fairly big impact on FPS obviously. So I removed that from tick and now instead I just wait until the UI needs to be updated, usually when a user clicks. So first performance issue FIXED! I was feeling pretty good about myself at this point. The next issue was a little more difficult. I ran the analyzer a few times and found out that the C++ portion of the generator was just fine. I didn't have any issues until after I passed the data to blueprints. What I found out to be the problem was when I loped though the data returned to blueprints from C++ and creating the game tiles was the drag. So I tried to move the game tile UI code to C++ but that came to an end after a few days of trying. I found out working with UI in C++ in UE4 is difficult, buggy and complex. So I moved all the UI back to blueprints. And after a few more days of thinking and bouncing ideas off other developers I cam up with an idea. Instead of creating all 900 tiles (30x30 grid for hard) at once, create just one row at a time. So I created a class in blueprints that will do just that. I create one row, pause, create another row, pause, etc. This actually fixed the problem and now the game doesn't freeze when creating the tiles. I can control how fast the pause is as well. And this has a good side effect of making the animation I play when showing a tile a little more elaborate. But still this brought about a new bug. Imagine that. Blueprint delay nodes come in handy when you need to pause execution for a moment. I have used them in a few places before. When a delay node is hit, it will pause for the specified number of seconds before continuing. So for the hard level I place a delay node that will pause for 0.025 seconds before continuing with the next row of tiles. Which did work however I ran into a number of things being null after the first delay node was hit. I would call the function that shows the grid of tiles, it would show the first row and hit the first delay node. Then instead of continuing down the rest of the function showing the rest of the tiles, before the delay finished it went back to right after the function call to show the tiles and finished. So I was hitting code that relied on the tiles being there before they actually were. This is not the behavior I expected but after asking a question in their answer hub, I found out this is actually expected behavior. I was able to get around this problem by adding an event dispatcher I can call when the tiles are all created. I then moved the code that was crashing to be run when I call this event. And that fixed the issue. Now I have a fully functioning level generator and the ability to use it without a huge performance hit. Now that I have this done I have to go back to single player mode and update that to use this generator as well. I'm getting pretty close to being able to have a little demo for people to try. I'll make sure to post here when I do.
  21. HunterGaming

    Farkle Friends

    Play against 3 other players in a game of farkle. The first person to 10,000 points ends the game and everyone gets one last turn to try and get the most points. If you farkle (none of the dice rolled are scoring) you lose your points for that turn and play moves to the next player. If you are lucky enough to get hot dice (all dice in a roll score) then you can choose to extend your turn and try to get more points. The in-game help system will help you with what dice combinations are scoring combinations. Your personal top 10 high scores are kept for future reference including your win/loss records. You can also submit your scores to an online leader board which will keep track of your highest score. Compete with your friends to see who can get higher on the online leader board. You must have a gamejolt.com account to submit scores to the high scores.
  22. HunterGaming

    New Game Announcement

    I have a new game I am working on now called MineSeeker. The game play is similar to Minesweeper if you have ever played that game before. I will be having a single player experience with 9 worlds and 10 levels in each world for a total of 90 levels. There will also be a quick play option which will load a completely random level for you to play. In addition to that, I'm also planning on a multiplayer experience where you'll be able to play with your friends on Facebook to complete random levels together. This will be a fairly large undertaking for one developer so this will take me a little time to complete. However its already starting to come together pretty well. I started by putting the UI together. So far I have a loading screen, main menu, level select screen and a game play screen. So far you can click on single player and it will load the level select screen. I have one working level so far. I ha still working out kinks on it and as soon as I do I will be using that to create the other 9 levels in the first world. Its coming along quite nicely so far. I have already learned something new on this project, the flood fill algorithm. I put it into the game to search for adjacent tiles that meet specific requirements. Its a recursive algorithm so getting it to work without entering an endless loop was a bit of a chore. Overall its a perfect fit for what I needed to do and it works nicely. Here are a few screenshots of the game. I'm also updating the font in the UI so some the screens have a different font.
  23. HunterGaming

    Postmortem: Farkle Friends

    Introduction I had a lot of fun making Farkle Friends. being my first game I didn't really know what to expect. Being a mobile app developer, I noticed a lot of differences and similarities in developing a game. But overall I really enjoyed it and am looking forward to my next game which I will have more info on in a future blog. There were a lot of highs and lows developing this game but I'll go over a few of the bigger ones here in this post. What Went Right 1. Using a Facebook Account I created a Facebook account to use for my games as I knew it would be a good way to attract players. It worked quite well actually and I already have a small following of people (68) who like my page.I was able to post updates for blogs and the game there and people were watching. I even got some people looking at my game pages in the stores from Facebook. So it definitely helped get the word out about Farkle Friends. 2. Choosing UE4 For Development I tried both UE4 and Unity mostly to get a feel for each so I could decide which to use. I also tried a few other engines but they mostly lacked in some areas so I didn't spend a lot of time using others. I originally wanted to have the game fully multiplayer using Facebook so players could play the game against their Facebook friends. There is more on why I took it out in the "What Went Wrong" section. So Unity originally appealed to me since Facebook has an SDK for Unity built right in. But I tried both for a while and just fell in love with UE4. At that time it was far more feature rich than Unity plus with UE4 you get full source code access, all development features for free. You only pay a 5% fee when your game makes $3000 or more in a quarter. See the EULA section 5 titled Royalty. So it grew on me and I think I'll be using that as my engine of choice from now on. 3. Making a Trailer I originally wanted to pay someone to make a trailer for me, but found out it was way more money that I thought it would be. So I decided to make my own trailer. It was actually an enjoyable experience and I think I will do it in the future as I make more games. It was also a lot easier that I thought it would be. The tools I chose make creating a trailer fairly simple and straightforward. I use Flashback Express to record game play. Lightworks to actually make the trailer from the recorded game play. And because Flashback doesn't export video in a format Lightworks can import, I used EyeFrame Converter to convert it to a format understood by Lightworks. Flashback and EyeFrame are fairly simple and straightforward to use. Lightworks is a little more powerful and slightly steeper learning curve but its actually really easy to accomplish a simple trailer. 4. The Game is Fun For people who enjoy playing Farkle or other dice games. It doesn't have a great appeal for a wider range of audiences, but for my first game I wanted to keep it simple so I didn't get discouraged for longer development times. I think for a first game it was perfect. it gained me the experience in UE4 to be more confident in making more complex and feature rich games in the future. As a matter of fact my next game, which I already started on and will be making a new blog introducing it very soon, will have Facebook multiplayer, many different levels for single player, and a quick play option if you just want to play a random level. It is a very good stepping stone into future games. 5. Facebook Marketing This for sure helped my game out around release time. Its fairly inexpensive and easy to advertise a post on Facebook. When you create the post and after you post it, there is a button to boost your post. That will step you through setting up an advertisement to run on Facebook. You can spend as few as a few bucks up to as much as you want. I have done 3 advertisements one about a week before release, one on the day of release and one a couple weeks after release. I certainly would not have the number of followers if it wasn't for this. I was able to reach thousands more people than if I had done no adverting at all. It was money well spent. You can choose where it will run, how many people you want to reach, how much you want to spend, and much more. What Went Wrong 1. Lots of Time Spent Switching Engines As stated above I spent a little time using both UE4 and Unity to figure which I liked best. Well I also changed my mind on which engine I wanted to use a lot. I would start developing the game and I would start to think of a feature that would be handy in the other engine that I could use now. So I would switch to that engine and restart development in that engine. I restarted development probably 5 or 6 times going back and fourth between Unity and UE4. I finally got to the point where I has to ask myself which one I really enjoyed using and just use that one from now on. No more going back and fourth like this. I'm not entirely sure why I did it. I think it might have been a little of the classic saying, the grass is always greener on the other side. So I finally chose UE4 for my engine and will no longer be going back to Unity or any other game engine for the foreseeable future. After all I have more games I want to make I don't want to spend all my time restarting development like that. So I have thankfully moved past this stage. 2. The UI The user interface could use a little more love. Its plain and sometimes a little clunky. I used free items I found on various different sites for the UI. I think in total I spent maybe 5 to 10 bucks on assets for the game. I know now that I am not a graphical designer so in future games I will be putting more love into the UI to make the experience much better. The UI in the new game I recently started working on is miles better, I think, than Farkle Friends. But again I new for my first game I wasn't looking to have the biggest and best game I could possibly make. 3. No Facebook Support After spending far more time investigating engines than I wanted to, I decided to not include Facebook support in the initial release. I originally wanted the game to be fully multiplayer allowing the player to play against Facebook friends. I knew adding it would take a bit more time to get it implemented properly. So I ended up shelving the idea and figured I would include it in a future release. 4. Delayed Release I originally wanted to release the game on October 6th. I set up all the stores I wanted to release in. For Steam specifically, through the process of creating my account, they told my it would take up to a week to set up the store and up to a week to approve the game builds. October 6th was a little over 2 weeks from the day when I submitted the store and the game builds so I figured that would be enough time. However what Steam didn't tell me while creating my account is that the first game you release, your game must wait 30 days after submitting the store and game to Steam for review, regardless of how long it take to approve both. So I ended up having to push my release date back an extra 2 weeks to allow for this. If I would have known that I would have added that time into the original release date to avoid a delayed release. Now for a one-person indie developers first game its not a huge deal. However, I just feel better when things go according to the plan. Conclusion All in all it was a good experience. Now that I have the first game jitters out of the way I can spend more time actually developing games in the future. It was a good challenge and I certainly learned a lot from it. As I mentioned above, I have already started work on a new game. I'm looking forward to applying what I learned making Farkle Friends to this new game to make it better. Its a game similar to Minesweeper and I will have a single player mode where you can play many different challenging levels, a quick play option to allow playing of a single random level, and a multiplayer component with Facebook that will allow you to try complete a level with a friend. I will have more on this game very soon.
  24. HunterGaming

    Farkle Friends is Finally Here

    Short update: I have finally released Farkle Friends to the masses! You can play it on Steam, Itch, and GameJolt.
  25. Ok I thought if I planned 4 weeks to get all the stores I want to release on ready to go, it should be plenty of time as I knew STEAM would be a week or 2 before it was ready to release. STEAM's website informed me it would be a few days to approve the games store page and a few days after that to approve my builds that I want to release. After I started getting into setting up my game on STEAM I realized it's going to take more time than that. After a week of working on getting my game ready to upload to STEAM I found out I will have to push back my release date as there is more waiting that is not made clear when setting up your first app. Store page and game build have been reviewed and approved Store page has been visible as 'Coming Soon' for at least two weeks Minimum of 30 days since the first purchase of an app credit The bottom 2 are not made clear when you set up your very first game on STEAM. At least I never saw anything about those two while setting everything up. So after you purchase your very first app credit which allows you to upload one game, you must wait a minimum of 30 days after that. So now STEAM is telling me the earliest date I can release on is October 1st. I am posting this in the hopes that anyone looking to release a game on STEAM and has not done so yet, take this information and make sure you plan for this delay when picking a release date.
  • 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!