Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 19 Jul 2011
Offline Last Active Today, 09:44 AM

#5286453 programming language for android.....

Posted by Karsten_ on 12 April 2016 - 05:55 AM


Just because C++ has been around for a long time doesn't guarantee that it will be around forever.   Just about every survey I can find shows that C++ usage has been declining for years.

Other languages are almost always written in C or C++. So whilst C++ popularity may be declining (which it honestly isn't), it doesn't mean the technology is going away... ever.


Yes, it may not be cool. I remember the day when people told me that C and C++ was already obsoleted by Java 1.5... Haha did I have the last laugh ;)


The fact that C and C++ both have hundreds of compilers available to them whereas languages such as Java and C# have only a few does speak very highly for how critical C and C++ is for software development and how much they are "the" standard technology that all others are based upon.


For a beginner, it may not be relevant but for any technology have a look at its dependencies, such as what the runtime requires, what the compiler requires etc... This will almost always be C or C++ but also gives you a good idea of the lifespan of the language.

#5284534 Tackle my first big project

Posted by Karsten_ on 31 March 2016 - 02:54 PM

IMO, you should use Unity since you already have working knowledge with it, your goal is to get up and running asap


Unity isn't always the best choice when trying to get up and running asap. Especially in a 2D project where there are much simpler (and more flexible) solutions. I would probably suggest MonoGame over Unity.


Using a framework or developing your own is likely going to help learn more about game play programming than just hacking around with Unity (which will only really teach about very Unity specific coding practices).

#5282705 GIT vs Mercurial

Posted by Karsten_ on 22 March 2016 - 12:47 PM

Github has actually been working on a git extension for large data files. They support it on their system, as well as on Gitlab. I don't know about whether Bitbucket supports it though.

You can find the git large file support extension here: https://github.com/github/git-lfs

I'm not 100% convinced to the benefit of this. Its not like a diff or a merge can be done effectively between large binary files (I know perforce can do it between images but its rarely useful). Our artists often put the raw data (i.e photoshop sources) on a versioned rsync server instead. Only the output assets (i.e png files) and code should really be on a version control.


rsync is faster and more scalable than any version control can be I suppose.

#5282587 GIT vs Mercurial

Posted by Karsten_ on 22 March 2016 - 04:17 AM

From a slightly different point of view, some notes on maintenance of servers:


Git - A pain to set up a multi-user Git server such as GitLab and managing multi-user Git directly is quite awkward. Most people just use GitHub which is not ideal.


Perforce - Easy to set up server but works horribly with continuous integration (Jenkins / Bamboo). We changed from this because of this.


Perforce Git Fusion - A massive faff to set up but allows perforce to work nicely (via git) on Continuous Integration systems (and OpenBSD).


Subversion - My personal recommendation. Provides a single binary server which is very easy to set up. No thrills, just works. Text file config but you can use SCM Manager for web config (https://www.scm-manager.org/). SCM Manager Supports Git too but has too many more extra steps its not worth it. Works great with Jenkins and Bamboo.


Also, my friend helps run CodeBaseHQ (https://www.codebasehq.com/). You might want to check out their free hosting offers before you do decide on GitHub.


Overall, I highly recommend subversion, I actually find its branch system a bit more structured than Git. Rent a bare VPN server and just manage the svn server yourself. You can then take snapshots of the VPN virtual machine to make backups of your entire repo too.

#5272138 Is C# viable for new game developers?

Posted by Karsten_ on 21 January 2016 - 06:57 AM

The C# language isnt outdated. I believe the implementation of C# (old version of mono) that Unity uses is quite outdated though.


XNA is obsolete, you will want to look into MonoGame (open-source re-implementation) instead. This can use the most modern implementation of C# (both Mono and Microsoft .NET).

#5267687 Replacing ECS with component based architecture, or traditional OOP, or somet...

Posted by Karsten_ on 23 December 2015 - 02:21 PM

Whilst not 100% accurate, I generally say a game architecture uses an inheritance based system if a game object inherits from more than one ancestor. I.e Object <- MovableObject <- Enemy <- BadMan


If minimal inheritance is used, i.e the architecture prefers composition to inheritance such as Component <- Position and then a position component is added to multiple objects, then I would suggest this one uses the component entity system.


That is in C++. In C, I find the best way for OOP is the component entity system since large chains of inheritance can get complex.

#5263248 Unity or Unreal?

Posted by Karsten_ on 23 November 2015 - 06:23 AM


Unreal 4 is open-source.


Nope it is not. For such an engine you would need to get Torque 3D MIT an engine running on Linux and Windows PC. Read more here.


That is an open source game engine.


UE4 offers you the source code and the game engine as a tool as long as you agree upon the UE4 license. An open source game engine under the MIT license demands nothing and you are free to use the tech as you wish.


Yes your exactly right. Unreal 4 does not use an open-source licence. Its entire source is available however to anyone who will accept the Epic Games license unlike Unity.


Updated my original post.

#5263192 Unity or Unreal?

Posted by Karsten_ on 22 November 2015 - 04:27 PM


Look into C++ and SFML that is a good starting point for you.  Learn C++ and make pong using SFML.  I suggest C++ because

1.High performance networking code is usually in C++ and in your other thread I think you mentioned an MMO.

2.Unreal engine, at least coding is in C++... but like mentioned in the other thread there is also blueprints.

3.Professionals use C++.

So do you reccommend Unreal? I was told unity is easier to use and learn.


The Unreal 4 source is available (but not under an open-source license). For my purposes that makes it a lot more valuable than Unity.

C++ is also the most portable programming language I know with the most libraries available to it making integration with other technologies a lot easier than when dealing with .NET.


However, I find Unity a bit easier for beginners to learn and seems more polished (because it was a product from inception as opposed to an internal development tool like Unreal).

#5261880 Generic Installer - Cross Platform

Posted by Karsten_ on 13 November 2015 - 04:55 AM

Perhaps provide a couple of different systems:


CPack for Win32 setup.exe

RPM for Linux

Deb for Linux

DMG for Mac OS X


Then... (because some players cannot have admin rights) provide a .zip for Win32 and a .tar.gz for more exotic Linux distros.


The difficulty with Linux is library versions so make sure to statically compile, or provide a bunch of .o files and provide a script to link them against their current version of libraries the first time they run it.


These 4 setup types can be scripted pretty easily and added to your build pipeline without much trouble. Basically it is pretty much on par with creating an APK for Android, a bit fiddly but once it is done, should keep on working (for a while ;)


My experience has taught me that many Linux / BSD users are able to extract (and often prefer) a simple relocatable .tar.gz file as a method of installation since it doesn't risk conflicting with system files.

#5258513 Help with specs for laptop

Posted by Karsten_ on 22 October 2015 - 08:48 AM

I actually recommend an older laptop (i.e a Thinkpad X61, Thinkpad X200). These will be fine of pretty much any 2D game (software or hardware rendered) and have the benefit of being very compatible with most operating systems, including Linux and BSD if you wanted to prepare yourself for future platforms such as Steam OS etc...

They also provide a very smooth way of developing (development libraries as part of the package manager) and additional tools such as Valgrind which is fantastic for memory debugging when dealing with native languages like C or C++.


Another alternative I might also suggest is a cheaper / older MacBook so you can test your game out on all 3 of the main platforms, Windows, Mac OS X and Linux. Installing Mac OS X on a non Apple machine is touch and go... Especially for laptops.


Plus older laptops which are less performant are a good way to test your games on slower machines... They also dont overheat your crotch when using it as an actual "laptop" ;)


You can pick up an older Thinkpad for about £70

#5233130 Monodevelop

Posted by Karsten_ on 06 June 2015 - 08:08 AM

Just in case the OP didn't know. Visual Studio 2013 Community Edition is free and far better IDE for working in C#. You can also develop against Mono runtime using it. 


I have used both and Mono Develop always annoyed me as it's editor just does not "flow" right when you are coding. The intellisense and formatting feels a little clunky 

MonoDevelop is free, open-source and runs on almost all modern operating systems. The clunkyness is worth it! ;)

#5209614 Should i use sdl or some higher level framework?

Posted by Karsten_ on 09 February 2015 - 10:01 AM

but I think I will use some low level tech. I have no deadlines, no long term projects, it's just for fun.

This is a good plan. Don't know if you are looking at working for a company but at work it is more likely we hire a C/C++/SDL developer than someone who has made a Unity game. I am quite sure that most large software houses or studios are similar.

#5202612 Web Games

Posted by Karsten_ on 07 January 2015 - 10:00 AM

I recommend looking into Emscripten. It is basically a C/C++ compiler that outputs to JavaScript using HTML5 canvas or WebGL. It also wraps OpenGL and SDL making your code ultra portable.
We have already used it commercially for our web games at work and it has proven to be a very good solution

#5194487 Best language for mobile apps

Posted by Karsten_ on 24 November 2014 - 03:36 PM

I also recommed C++ because Java, and C# (and to some extent Obj-C) are largely the same once you know them (and if you choose to not take advantage of any of C++'s most powerful features). C++ however is although a second class supported language on most mobile platforms, it is still a "supported" language so you can generally port your game to any platform with maximum code reuse.


Unfortunately since C++ is not a first class supported language for most mobile platforms, the API documentation is often terrible.

#5184029 Good source for best OS practices?

Posted by Karsten_ on 30 September 2014 - 04:40 AM

I have seen multiple techniques for distributing software in Linux / UNIX.

1) The most standard way
/usr/local/bin (binaries)
/usr/local/share/<gamename> (data files)
/usr/local/etc/<gamename> (global config files (optional)
/home/<username>/.<gamename> (local config files)
This is sometimes a pain because it spams the filesystem with files and if you try to move it, often the paths are hardcoded at compile time so they will look in the wrong locations.

2) The common way for ported software
/opt/<gamename> (everything dumped in here)
/usr/local/bin (simple script added here to set paths and run game)
I personally do not mind this too much. It keeps the proprietary software away from the rest of the operating system. Typically used by software such as acrobat reader, skype etc...
This solution is also good for developers who use non-native (to UNIX) languages such as Java, .NET etc...
I see a lot of indie games written in Mono which distribute an entire implementation of the mono runtime with the game. I much prefer this to having to install mono on the system. I would also quite like to see Java developers distribute their games with an entire JRE. For an extra ~10 megs, it saves some pointless headaches for the user. Almost all software on Windows provides its own msvcrt.dll (C runtime) so the duplication is massive... but who cares right? At least the developer knows that the correct runtime will be used when the user double clicks the game haha.

3) The portable binaries way (kinda a hybrid)
When the application runs, it works out its own path and works out paths to external files at runtime. This allows it to be moved to wherever, /opt, /usr, /usr/local etc... without breaking hardcoded paths.

The hardest thing about this is getting a program to work out where it "lives". I use the following code...

(have a look at void Application::setupPaths())

It may look quite crazy but this is not an easy task to solve in a portable manner (things like procfs only really exist on Linux so I needed something that worked on the BSDs too). Feel free to ask any questions about it.

I also use this method for software on Windows. It works quite nicely and gives it a bit of a UNIXy twist ;)