Jump to content

  • Log In with Google      Sign In   
  • Create Account

Awesome job so far everyone! Please give us your feedback on how our article efforts are going. We still need more finished articles for our May contest theme: Remake the Classics

lawnjelly

Member Since 20 Mar 2012
Offline Last Active Apr 24 2013 01:13 PM
-----

Topics I've Started

Content policies in games and censorship

05 December 2012 - 12:46 PM

I'm currently writing a little indie cartoony 2d adventure game, and have come upon some interesting questions about censorship... The game is currently set based on exploration in victorian africa.

If I were making a movie on this basis, I'd feel covering subjects such as racism, slavery and violence would not be considered out of the ordinary, but part of representing the time period and part of the 'art' of the movie.

However for games there are 'content guidelines' for selling your games via certain outlets. If you include certain elements, certain outlets won't touch the product. I know for consoles you can get the more mature ratings and be allowed a reasonable amount of leeway, presumably with the idea that a 'shop owner' would be responsible for not selling to younger customers.

But for mobile games, there seems to be a bit of a 'disney child friendly' thing going on, where stores won't touch your game if it is at all risque. Posted Image I'd guess this was particularly true for iOS, but I just had a look at the google play guidelines, and they say:

Sexually Explicit Material: We don't allow content that contains nudity, graphic sex acts, or sexually explicit material. Google has a zero-tolerance policy against child pornography. If we become aware of content with child pornography, we will report it to the appropriate authorities and delete the Google Accounts of those involved with the distribution.

Violence and Bullying: Depictions of gratuitous violence are not allowed. Applications should not contain materials that threaten, harass or bully other users.

Hate Speech: We don't allow the promotion of hatred toward groups of people based on their race or ethnic origin, religion, disability, gender, age, veteran status, or sexual orientation/gender identity.


So basically that seems to rule out gratuitous decapitation, cannibalism, racism and beast action.Posted Image

In a movie for instance, it is regarded as ok to have, for example an obnoxious racist character. Usually this will be reinforced because they'll get their commeuppance in the movie. But is this kind of subject too far to even broach in a game? This is what characters are all about, some you will root for, but some might be unpleasant characters. Just because a character does some action, it doesn't mean the movie condones that action. But is this even allowed in games?

I know the big publishers won't risk things if they aren't sure it will be allowed, but as an indie you have more freedom.

Anyway what do you guys think of this situation, any views / experience? I'm currently considering hedging my bets with 2 sets of content for conversations for example.

Where do you think the line should be drawn?Posted Image

Running a LUA script one part at a time

03 December 2012 - 02:07 PM

Hiya, I have some experience writing my own scripting languages in the past, but wanted to have a go at using LUA for a little 2d rpg type game.

It was very easy to get it loading a script and running it within the game, so far so good. Posted Image

Next stage is, instead of running an entire script at once (via lua_pcall), I want to be able to run through a script, up until it reaches certain time consuming functions, when I want to pause the script until the c++ tells it to resume again.

Here's the flow:

monster.lua:

TextOut("Hello I am a monster")
Wait(5)
TextOut("Now I'm going to eat you")
Wait(2)
MoveToPlayer()
TextOut("Yum yum")

So within most scripts run by characters etc, I need to pause the script, get on with running the rest of the game, other scripts etc, then resume again when the wait condition is satisfied.

The example above has 2 'waiting' functions, Wait (number of seconds), and MoveToPlayer (which may take a varying amount of time).

Hopefully this should make sense.

Does anyone have any idea how I should achieve this in lua? I'm having inkling feelings it may be to do with the yield and resume commands, but I haven't seen any decent explanations.

Many thanks.

DoodleTrace autotracer alpha version

29 August 2012 - 12:31 PM

I've just started playing with 2d animation using Anime Studio, it's an animation package for vector art. Was having lots of fun and decided I might be able to use it to make a 2d game. Next stage was trying to draw some characters. Although I could do it with the mouse and the wacom tablet, I found it slow going, and quite difficult to get what is in my head onto the page.

It struck me there must be an easier way - I quite like doodling on paper, so I wondered whether it was possible to doodle on paper, scan it in, then autotrace the line drawing to something I can edit.

So I tried it .. unfortunately nearly all the autotracers I tried (Anime Studio, Inkscape) converted brush strokes into an outline, i.e. with a path at each edge, rather than a path down the centre, which is what I wanted for easy editing. After a bit of research, it turned out to be a common problem, and the solution was a different technique called centreline autotracing.

I gather Adobe Illustrator and Corel Draw can do this, but I don't have those programs. There is also an open source 'autotrace' command line program, but it crashed when I tried to run it, and I couldn't get the java GUI version of it to work either. So In my frustration, I did what anyone would do, I decided to have a go at writing my own.

After 2 or 3 days of playing about, I had a command line program that was just about workable (for me). Then it struck me why not release it as freeware. I could have stuck with the command line, but I read a lot of frustrated posts by artists not able to use autotrace because it was so 'geeky', so I thought I would try it as a testbed for building up my GUI system (I have been writing a simple windowing system).

Posted Image

So two weeks later, here it is for you guys to try out. I spent most of the time building up / debugging GUI stuff rather than on the autotracer itself lol. But I'm happy for it because I can reuse the GUI system to easily write new apps.

Anyway the program loads black and white images as TGA files (this is the only lossless image format I have a handy loader for, but I am planning to support PNG and maybe a couple others). Then you can set the parameters and set it off, and finally it saves in either Adobe Illustrator (.ai) or Scalable Vector Graphics (.svg) format. Actually the .ai file may be a little dodgy, as I reverse engineered it, and only got to test it with the Anime Studio importer, but I'm *hoping* it will load into illustrator too lol. Still the .svg seems to be working fine, and the .svg files loaded into google chrome ok.

So if you want to try the program it is about 400K.

You can download it here:

http://dl.dropbox.com/u/100894566/DoodleTrace_006.zip

I also have created a facebook page to see if I can get some feedback and where I will post new versions:

http://www.facebook.com/doodletrace

Many thanks if you guys can try it out. It should run on most flavours of windows, and the only requirement is opengl graphics.

How to save stroke widths in adobe illustrator files?

14 August 2012 - 03:52 AM

Not sure this is the right place this, being kind of programming related, but:

I'm just writing a quick centreline autotracer, to convert line art to vector. I'm just starting to get it working now, here's an example I just tried:

Posted Image

I'm currently exporting to the adobe illustrator .ai format, because the Anime Studio software I'm intending to use will import this. I'm saving the strokes as bezier curves of the form:

0 0 m (move to this coord)
0 1 1 1 1 0 c (bezier curve to 1,0 using the 2 control points)

I've figured out putting in
4 w
sets the width of the line, however it seems to be using the same width throughout the line, whereas I want to nicely smoothly interpolate between widths at different points along the stroke. Posted Image

Anyone know how this should be done? Or even whether it can  be done in the .ai format?

Efficient GUI rendering

04 July 2012 - 10:47 AM

This has probably come up before here, so feel free to link me straight to a good source of info .. but ..

Anyway for various reasons I have written a little GUI system for a game I'm working on, and decided to have a go at fleshing it out to make it useful for writing tools or little apps, possibly cross platform. Oh gawd, yet another reinventing the wheel I hear you cringe, yes, well, can't say much on that ...

Here's a screeny showing I have it working ok, it didn't take too long:

Posted Image

For the game I was using directx to do the actual GUI rendering, but I've swapped over to opengl for general use, and it's a long time since I did much opengl, I'm very out of date with it.

So my question is probably to people who have done this before, what did you find the most efficient way of rendering the GUI objects? I can see there's a few trade offs involved. I was until recently just doing everything in software, writing to one big software surface, then locking a big viewport size texture and copying the RGB data across. Not particularly elegant or fast, but simple and it works.

That is until I realised I wanted to have some opengl 3d viewports displaying 3d models inside the app, with GUI elements possibly overlayed (such as menus, or dialog boxes). And to future proof things it would be nice to not lock the entire viewport every time there is a little change, so it works at reasonable speed.

So my guesses for some alternative methods are:

1) As each 'widget' is changed, I render this to the big software texture, and lock and upload just a part of the texture (using glTexSubImage2D?). This isn't as simple as it could be though, because it appears the source data can't have a 'pitch' to jump across the x coord on each line (if the viewport is much wider than the 'dirty rectangle'), so I'd have to first convert the big software texture to a temporary smaller one before uploading to opengl.

I could also keep a list of dirty rectangles that need uploading to opengl to avoid uploading the same area more than once in a frame.

2) Same as above but keep a separate software surface for each 'widget'. That way it can be uploaded without fiddling. However it makes changing the size of widgets potentially more problematic (as the software surface size will change), and would be nicer to avoid all those unnecessary memory allocations (although I could use memory pools I spose).

3) Have a separate opengl texture for each widget. Probably faster for rendering but pretty ugly in terms of memory allocation / deletion.

4) Try and render everything directly on the 3d card, without using software textures.

So, anyone know is there a standard good way of doing this? Anyone know what CeGUI, MyGUI etc do?
Cheers Posted Image

PARTNERS