About this blog
Ramblings of a guy who tries to do too much
Entries in this blog
Original Journal: https://www.gamedev.net/blog/1062/entry-2255007-heres-a-tiled-converter-just-for-you/
Here's an update to the Tiled Converter: http://www.mediafire.com/?wulvvjc8ju0m5wl
This update fixes several issues and adds a couple of features, such as loading the tilesets from multiple possible directories in the loader. You can also specify an output directory by passing -dir to the converter's arguments.
I'm also considering rewriting the converter's code so that it works with generic C++ and so I can also release it as full source code under the public domain. If anybody's interested, please let me know!
I've recently developed a format converter for Tiled, the open-source orthogonal and isometric tile map editor!
You can download it here, released under the Public Domain: http://www.mediafire...8r1y4b66ohrgm46
It includes has an implementation for a loader, fully working under C++/SFML. It supports TileSets, Layers, and Objects (which is pretty much everything Tiled works with, from what I know). Please notice it only supports Orthogonal tile maps!
The converted format has the layers become several slices of geometry, split by tile sets. So you can make a map like this:
And the end result will be something like this:
The two "Extra Tiles" up top appear due to how we're handling Objects as an example, using them as tile coordinates so certain tiles appear there.
Just be sure you convert the map first with convertmap.bat before you try out the sample! It should work relatively well, as it wasn't tested with more complex maps, so please let me know if you spot any bugs!
Here's a video of a game prototype I've been working on for a while: Link
This video shows the work of over a year and a half, using the limited time I have after I'm done with my full-time job every day.
In this game you can create your own magical spells combining spell fragments, or essences, in order to battle your opponents. The game will have multiplayer, along with much more content, and a story mode where you are Sul, a young girl who has been suddenly thrown into a strange world to fight a corruption that is placing her entire reality in danger!
We're hoping to release the game on Steam once it is done. Also, remember, this is a prototype, and is nowhere near finished!
Awesomium is a "google chrome in a lib" library that can be used on pretty much any application to render web pages (including flash and silverlight content), and has a great indie license to boot.
I know there are developers like me who'd rather not write their own native UI code for their games. After writing my own and having little success, and by that I mean that it was overly complex and hard to create and use any new UI elements and also mimicking their behaviour, and having tried several libraries such as libRocket, I helped a friend work on some web design assignments he had for university, (re)-learning HTML and using HTML5/CSS3/jquery for doing all sorts of awesome things.
I already heard of Awesomium and how you could use it combined with games for UIs and such, but considering my lack of HTML skills, I didn't consider it at the time. After I did help my friend, I had some moderate understanding of some fancy CSS3 tricks and was able to compose a UI relatively easy. And after I learned how to use some of Awesomium's most awesome features (no pun intended), I find it to be the very best UI library around.
Some advantages on using Awesomium
Writing custom elements is much easier. You don't even have to write pretty much any code in your native language.
You can have fancy animations and even pre-made UIs using JS libraries like jquery UI.
You can use the awesome open source fonts from Google Web Fonts!
Works on the 3 main OSs (Windows, Linux, OSX)
It is rather quick and uses the same "multiprocess" scheme that Chrome uses (so if an Awesomium-created process crashes, your game won't crash)
In the upcoming 1.7 SDK which will be released in the next month, you will have full support for HTML5, and with it, you can use the tag to show videos and the tag to have your own sound system without having to resort to other libraries such as FMOD and as such not having to spend too much money
You can have in-game web browsers, among other interesting interactions within your game
Many other fancy features like custom HTTP headers and resource handling
You may be wondering, why prefer this to libRocket. LibRocket relies on a heavily modified version of HTML/CSS and as such is much harder to work with, even if it has a nicer license.
Some tips while using Awesomium
The biggest challenge while using Awesomium for me was having the UI elements become unselectable when the user drags the mouse around. You might think this to be a minor inconvenient, but I felt that the UI elements should look like actual UI elements instead of just a webpage overlayed on top of the game. If you do a search for how to do this, you'll find various solutions, but for some reason using them wouldn't work very well for me.
However, I ended up writing this very simple CSS class:
And using it like so:
You may be wondering why I have three lines doing the exact same thing. I did that so that it will work on my main browser (Firefox) and also on Awesomium (which uses Webkit). For some reason Awesomium was not accepting -webkit-user-select so I added the 3rd line which is more standard, CSS3-wise.
Another useful bit of code allows us to remove the custom webkit outline that happens around input elements.
There's not much to talk about this part, but this is very useful since e.g., the outline around textboxes will not be shown. Here's an example of how it looks when the outline is shown:
(Taken from http://www.electrictoolbox.com/remove-webkit-border-input-focus/)
And that's pretty much the end for this post. I hope you find it useful. I didn't leave much details on actually implementing Awesomium because it is rather easy to use, even if you use their C API (as I had to, since their project files on Windows were for VS2008 and I was using VS2010).
So Drew suggested I elaborate a bit on the piracy levels I reported on my last journal, when I mentioned we had released "Fling!" on the Android Market.
I can't give you guys whole numbers, but to sum it up, the game was being pirated since the first day it was released. So far, we estimate it has been pirated over one hundred times the amount of sales we currently have, which is money at least I sure would have loved having (especially considering my personal financial situation, which I will not elaborate on), since we're a small company, and that sort of piracy does hurt us considerably...
If you're wondering how we're estimating those numbers, our ping server, which receives a ping from every new copy of Fling the first time it is ran, and thus lets us see how many new copies are around, shows us how many pings we're getting each hour or so, and we can compare that to how many sales we had so far.
It's quite disappointing how people are pirating a game that costs as much as 1 USD. It's not that expensive. And it has a lot of content, including several free updates, the first that is going to be released soon. So for those of you who say that piracy is not a lost sale, I'd say that you're right. It's a single lost sale, it's a lot of lost sales.
My boss is pretty optimistic though. He believes in the "Piracy can lead to more sales" idea, though I'm not comfortable with either our current sales on Fling for Android or the idea that although the game is being pirated in the hundreds an hour, someone out of those hundreds is going to decide to buy the game.
For my final paragraph on this journal entry, we implemented Google's Market Licensing stuff to help fight piracy. However, it is horribly easy to disable. In fact, seems like other game studios don't even bother with that at all. And we're probably going to follow them in that particular point at least.
First off I'd like to apologise for the seemingly "lack of context" in my latest journals. That's what I get for not being used to writing these and being in a hurry all the time.
I've been working on a port of a very successful iOS game to Android for 9 months now, and yesterday the game was finally released. It consists of pushing (flinging) some furballs into other furballs in order to push them out of the game board, until you have only one furball left and "win" the puzzle. Some of you might remember it as "Fling!" on the iOS. Well, we kept everything exactly the same on Android, and you can buy it or try it.
For more on how the game is played you can also check this youtube video:
I hope you like it, me and CandyCane LLC went past some very hard times porting this, and you can finally try our effort.
[heading]Hey there, how time flies, and some ramblings[/heading]
I'm sure most of you will disagree with my views, however please don't think of me as someone who is saying "I'm totally right, everyone else doesn't know squat", since these are merely opinions.
So I've finally created my GDNet journal. Took me quite a while, too! I hope to be more active around here, as well as in my blog.
I've been working for a living as a game programmer for CandyCane LLC, a small smartphone game studio who has been producing a few games mainly for the iPhone, and more recently for HP Palm's webOS, Android, and Windows 7 Phone, where their probably most popular game is Fling, a game where you "fling" various game pieces so they bump and send each other out of the board until you get only one left. I've been working for them for exactly one year now.
It was a rough year, especially since this is my first job in the industry and I am still kind of a rookie, even though I've been programming for almost 11 years now. My biggest challenges so far have mainly been the game ports from iPhone to webOS and Android, but I'm getting better so it'll probably stop being such a challenge in this upcoming year of work.
Although my dreams of making awesome evolving 3D worlds, a project I called "WorldBase", have been delayed because of my job, I'm hoping to restart working on it in a few years when I have plenty more available resources and thus more security for the entire project, in order to prevent it from failing once more.
[heading]If there's one thing I've learned after all these years, it's that:[/heading]
[subheading]Learning how game technology works is very important[/subheading]
But people tend to end up trying to make their own 3D Game Engine in the end. This is often a bad idea, especially nowadays when we have the UDK and Unity available free-of-charge.
[subheading]Spending too long developing game tecnology is a curse you can't escape from[/subheading]
After you've learned how a large part of game tecnology can be developed, you start to feel picky when trying to select a game engine for your projects. That's mainly because you end up developing your own "style" and since all game engines are developed in different ways, with many different tools and interfaces, you will end up disliking them all, leaving you to make your own, once more. This is even more of a curse than most people expects, since you can start a project thinking "I'll make a simple basic game engine" and spend years working on it without realizing you're spending too much time on the tech with little of the game to show.
[subheading]A lot of commercial game engines out there that are geared for Indies are not that great[/subheading]
Everyone loves talking about Torque, Unity, UDK, C4, etc. But fact is that some of those engines have less-than-friendly Indie licenses or are apparently not very good. As an example, I ordered Torque 2D when GarageGames was reborn and started selling all their products for $99 with Source included. I saw their License, and after posting a thread in their forums, they said the following:
[quote]@Nuno - The license allows you to use a copy of T2D for your own development. If you want others to help you in development, such as writing code or creating levels, they will each need a license. Anyone touch the editors, TorqueScript or C++ needs a license. If you have an artist that just creates the sprites but just hands them off to you, never touching T2D, then they do not need a license.
Make sense? [/quote]
Well, this is horrible from an Indie point of view. Often Indies will have more than one programmer, and spending twice or more of the original license makes the whole thing incredibly expensive. Indies don't always have that much funding, so just getting $99 is quite a feat. If you get a SVN server for your project, which will include torquescript and maybe some C++, even if your artists don't use the SVN directly, you have to spend those $99 once more. Imagine this when their $99 promo goes back to the old price which is probably more than twice as expensive.
The worst part is that it seems that a lot of asset producers seem to be limiting the number of persons that can have access to purchased assets to one, maybe two persons, and the real world just doesn't work that way. In a world where websites like xp-dev.com and assembla.com provide free file versioning services like SVN and GIT, the ammount of people who have access to a SVN server is generally everyone who is part of the group that created the server. So what can you do in order to keep everything A-OK? Create a separate SVN server? Remove access to the SVN from most team members?
Often you'll also find engines that look great, but once you try their demos or look at their samples you notice how they're not something you'd enjoy using. A couple of examples would be C4's engine demo, which although looking pretty sweet, has horrible physics, and the Leadwerks engine's API, which is just ugly.
Now, I don't know if the developer who created the C4 demo just wanted to setup the demo's physics quickly, but trying the demo made me not want to get the engine at all. The biggest demotivator was when i tried to climb some stairs. I'd get stuck, press SPACE constantly in order to jump, and more than often I'd jump backwards somehow, causing me to have to painfully climb those stairs all over again.
[subheading]It's really hard to manage a team even if there is genuine interest in a project[/subheading]
Yes, it's true. I've created a small Indie team called Flaming Torch Games, and even though we were getting some great progress on our first project, a game that we codenamed "Rectangle Bejeweled", the project is slowly dieing as I speak, even if there is no proper reason for this. Most of the team never communicates with each other, no matter what I try to get them to do so, and some people have barely done anything so far. The problem with internet teams is that they often forget about the team and often get busy with things in real life that will make them unavailable pretty much all of the time. The main problem is that most people just go "hey, that game is cool" but don't want to do any work or just lose interest because it's "a lot of work". However, when there are people actually trying to be productive for the team, they are still very busy, often with their full-time job. Bottom line is, people are very busy, so unless you hire them yourself you'll need a lot of luck to have an indie team that works.
[subheading]3D games need a team, stat[/subheading]
Often you'll see someone single-handedly trying to make an awesome 3D game, maybe even attempting to do something really "simple" like a character moving in a small chunk of land with some buildings around. However, what I've noticed the most is that that's just not possible to do all by yourself. You need external resources, mainly art, since a programmer is often not an artist and free 3D models only get you so far. You also can't just make some simple textures for a 3D game to behave as "programmer art".