Indium Indeed

Members
  • Content count

    0
  • Joined

  • Last visited

Community Reputation

372 Neutral

About Indium Indeed

  • Rank
    Newbie

Personal Information

  1. I agree about ImageMagick. It had been actually part of my toolbox for years, but I forgot to mention. It useful, for example, in making various sizes of icons.
  2. I wanted to make a game play trailer for my original arcade puzzle game Futile Tiles (http://www.futiletiles.com). The game is very fast and I needed to achieve high framerate and quality for the video, which is challenging using a slow computer. Low recording frame rate can also distract controlling the game actions. This article teaches recording game play videos with maximum resolution and framerate. The solutions presented are quite easy to code, but not very obvious at first thought. Solution A Do not use external recording software. Instead make the video using your own code. At the end of each completed frame take a screenshot and save it to an image file (for example from 000.png to 999.png). You can later combine these images into a complete video by using FFMPEG or some commercial video editing software. Remember to make the game actions proceed the right amount of time between the frames, such as 1/30 of a second, depending on your target video framerate. Problems with solution A You are able to capture the video with full resolution, but the framerate can be too low while recording. If you need to interact with the game, the video can look unnatural. Also you are unable to record the sounds. Solution B Do not take a screenshot at the end of each frame. Instead, save directions how to draw each frame to a file. It is much faster to save this data than to take the screenshots. You should save the rotation, the scale, the transparency and all the other relevant parameters of each object on the screen to the file. After you are finished recording the data of your whole movie clip, you can finally load the data and replay it on the screen. During the replay session, take the screenshots at the end of each frame. The Problem with solution B You are able to record the video with full framerate. However, you are unable to record the sounds. You could manually add the sounds in correct locations by using some video editor, however there exists a better solution. Solution C To solve the problem with the sounds, you need to use some software that supports adding a combination of sounds to a video clip via scripting or command line. I used Adobe After Effects scripting for this purpose. You might be able to achieve the same with the combination of Audacity and FFMPEG. When a sound is played during game play, save the type of sound clip and the time since start of recording. Make a script based on the collected information and save it to a file. Finally combine the sounds to the video with the help of the script. Result These methods were used for the trailer of my game Futile Tiles (http://www.futiletiles.com). When the trailer was recorded, Youtube did not support 60 fps video. However, it seems that the support is currently being added. If you are making a similar fast-paced game, the video quality could be greatly improved with 60 fps. What do you think about the offered solutions? If you have a better way to achieve similar results, please, share it. Please, follow me on Twitter for more awesome tutorials and games: https://twitter.com/IndiumIndeed Article Update Log 8 Sep 2014: Revised language 2 Sep 2014: Initial release
  3. Introduction This article is written from the point of view of an independent solo game developer. Developing games is a very demanding process. In order to create a successful game, a lot of time, determination and knowledge are required. One of the most time taking tasks could be finding the right tools for the job. The tools can improve the quality of the end product, while saving a lot of time. Choosing the Right Tools Game programming/development: Choosing the game engine/framework is probably the most significant decision that you have to make. Here is a list cross platform tools that can be used by indie game developers. All of these tools have desktop, Android and IOS support. A) Libgdx (http://libgdx.badlogicgames.com/): This is my favorite solution. I have spend huge amount of time with Libgdx. I made Futile Tiles (http://www.futiletiles.com) and some live wallpapers with Libgdx. I will definetely use it also in the future. Benefits: + Free + Open source. Being open source has a huge benefit. You are not on the mercy of other developers. In closed source products, you might end up in a situation, where you cannot fix a bug and the developer of the product is unable/unwilling to do it for you. I have faced this situation myself several times. + Enough low level to add new functionality and fix bugs, but still quite easy to learn. + Enough high level reduce wasted time. + Very wide range of helper functions. + You can use Eclipse IDE, which is in my opinion the best IDE that exists (I know many will disagree). Eclipse takes a lot of time to setup, but it is the most customizable IDE that I have seen. You can setup keyboard shortcuts for almost any imaginable function and there is vast range of free extensions. Eclipse has also the best Android support of the IDEs. If you plan to use it, I recommend to go through all the settings in Eclipse to make it more comfortable. Find the functions that you use the most and make shortcuts for them. My most use functions trigger by pressing the function buttons F1-F12. + Friendly, helpful and relatively active community. Open source development simply does not work, if people are not helping each other. + First class support for Spine animation editor (http://esotericsoftware.com/) + Excellent profiler support. While developing for Android, you can exactly find the functions that slow your game down or reserve memory. + Abitity to run the project as Java Application. It is very helpful in debugging, recording videos, live coding and has very fast compilation time. Disadvantages: - IOS support is lacking behind Android. It is OK, but I recommend to make the game first on other platforms and then finally focus on IOS. - The level editing tools of Libgdx are not as high quality as in some of the other solutions. There is a good editor for 2d physics based games, called Rube (https://www.iforce2d.net/rube/). There are some tile based editors, but I have not tried them. I am not aware of any good 3d level editor. - Documentation and information available online is not always complete or up to date, but helpfulness of the community and being open source usually compensates the problem. B) Unity (http://www.unity.com): My second favorite solution. I have spend several months with Unity. I have some working prototypes ready, but I did not publish anything yet. However, I might use it for some complete game in the future. Advantages: + Unity asset store can speed up development a lot, at least, if you have a bit of money to invest. This fact alone is huge plus. + Quick to make prototypes. + Much information available online. + Much easier to make simple 3d game that in Libgdx. + Visual prototyping has its benefits. + I think C# is very good language. Disadvantages: - Closed source, which causes vast range of problems. You are completely on the mercy of other developers. Because there is vast amount of bug reports and features requests appearing to their website all the time, the requests from the little people have very little chance to be fixed in reasonable time frame. - Some of the features are paid (and very expensive). If you are focusing on mobile development, the lack of good free profilers could be a deal breaker. It could be very difficult and slow to detect the source of the problems in your game without a good profiler. Also many visual effects are only available in the paid version. - Lack of good IDEs. The standard IDE (MonoDevelop) is just awful. If you are used to Eclipse, you are not going to have fun here. However, there is a possibility to use Microsoft Visual Studio, which is a bit better than MonoDevelop, but I think it is still lacking a lot behind Eclipse. Some of the keyboard shortcuts and functionalities that I am used in Eclipse are just not available in Visual Studio, which can slow the development speed. - Even, if and maybe because, the community is huge, getting help might be challenging. Because of the huge amount of noob questions, people are are fed up answering them. If you don't find help in some article or other resource, you will probably not get help by posting on the forums or IRC. C) Unreal Development Kit (https://www.unrealengine.com/products/udk/): I tried UDK about three years ago, so this information might be slightly outdated. I think it is mostly designed for large teams and individual developers will have rough time here. I decided to not use it anymore. Benefits: + The graphics are just awesome. This is the reason, why I spend quite a lot of time with it. + Nice amount of help online. Disadvantages: - Not completely free. - Not very flexible. It is quite difficult to make anything else, but a first person shooter. - It is very difficult to learn compared to Unity and Libgdx. - You might have to learn a lot of the code made by other developers in order to use it effectively. D) Cocos2d-x (http://www.cocos2d-x.org/): I have only learned the basics of Cocos2d-x. The main reason for studying it, was its popularity. I wanted to know why it is more popular in game development that Libgdx. I did not find the reason/reasons. Benefits: + Free + Open Source +/- Little bit higher level than Libgdx. This can be good or bad. It can make development faster. Doing your own optimizations can be more difficulty. Disadvantages: - Lack of good IDEs. - This is personal choice, but I feel that Windows support is not very good. I might be wrong though. - Cross platform projects don't feel as convenient as in the other solutions. - I think the amount of helper functions is lacking behind Unity and Libgdx. Graphics tools: I think graphics of games are very important. If you create exceptional graphics, your game has much more chance to succeed In my opinion, every game developer should know the basics of graphics asset creation. 2D Raster: The best free alternative is, to my knowledge, GIMP. I used it a lot before, it is quite good. If you don't have money, you will use it happily. However, now am using Photoshop, which is quite expensive, but superior compared to Gimp or cheap commercial raster tools. 2D vector: The best free 2d vector tool is Inkscape. Even after buying Adobe Illustrator, I find myself going back to it sometimes. Somethings are better in Inkscape, but still my main tool is Adobe Illustrator. 3D graphics: Blender is the best free tool on the market. It is time taking to learn, but has huge potential. There are many good commercial tools, however, they are very expensive. 2D animation: In my opinion, Spine is the best tool for 2d animation in games. One of the huge benefits it has, is the ability to not pre-render the animations, which decreases the download file size of final product a lot. Spine is, however, a commercial product. I don't know any good free products in this category. Sound editing: Audacity is to my knowledge the best free solution. I was very happy with it, however, now I am using Adobe Audition, which has some benefits in the field of sound quality improvement. Music making: FL Studio is quite good and relatively cheap sequencer. I am quite happy with it. There are more expensive solutions that are, according to other people, better. I tried many free solutions and did not like them. Video: To my knowledge, I have tried every major free video editing software available on Windows and Linux. The only usable free tool is FFMPEG. It is, however, a command line tool and definitely not as good as some of the commercial ones with graphical user interface. My current commercial solution is Adobe Premiere Pro + After Effects. There are many other commercial solutions available, but I have not tried them out that much. Word of notice here: many cheap video editing tools don't allow commercial production. Read the licenses before buying them. Backups: One of the most important things, while developing games, is doing backups. I recommend using Git with http://bitbucket.org. It is free for small teams even in commercial projects. Using Git is much better solution that making backups to external hard drives. You can see individually the history of specific files. You can restore any previously saved version. Your files are safe even, if the house burns. Organizing ideas: Colornote on Android can be used for writing ideas down. Mind mapping tool called Freeplane can be used for organizing ideas on computer. Other tips: If you find yourself repeating the same task over and over again, find out, if there is a way to do it with batch scripts, which can save a lot of time. In many cases it enables tasks that could not be done by other means. Conclusion What do you think about my choices in game development? Which tool is in your opinion superior to my choices? Which tool could have made my recently published Android/IOS game Futile Tiles (http://www.futiletiles.com) better? Please, follow me on Twitter for more awesome tutorials and games: https://twitter.com/IndiumIndeed