Show Posts

You can view here all posts made by this member. Note that you can only see posts made in areas to which you currently have access.

Topics - tzachs

Pages: [1] 2
I wanted to share a dilemma I'm having and maybe get some feedback. It's about which library to choose for loading/manipulating bitmaps, vector drawing on bitmaps and text rendering.
Currently we're using GDI+ on desktop and native APIs on mobile.
Reasons I want to move:
1. Be able to share code between desktop and mobile.
2. GDI+ has been a little buggy in the past, and it's single threaded only.
3. The real deal breaker, though, is loading custom fonts (i.e fonts that are not installed on the system). It seems to be completely broken. It used to work on Windows but not work on Mac and Linux, but now it stopped working on Windows too, and I have no idea why. On Linux & Mac I can do an ugly workaround by installing the fonts and restarting the game, but on Windows I can't even do that unless the application runs with elevated permissions, and I don't want to force people running the game as administrator. And it becomes urgent to move now, as I want to use font awesome for icons in the editor and I don't want to force people to install the font.

Both ImageSharp and SkiaSharp claim to be fully cross-platform and appear to support loading custom fonts and be able to run concurrently, so all of those should be solved (well, we'll need to test).
ImageSharp is a fully managed solution and community based, while SkiaSharp is a managed wrapper around Skia -> Skia is used by Google Chrome and developed by Google and SkiaSharp is sponsored by Microsoft.

Differences between the 2 libraries:
1. ImageSharp being a fully managed solution will be easier to debug if something goes wrong, probably be more portable because one less dependency (although skia is also probably very portable if used by chrome) and easier to deploy, and easier for us to contribute to if we need to make changes (and is more popular among developers, maybe for that reason).
2. SkiaSharp is faster than ImageSharp, and it allows in theory to have hardware-accelerated text rendering (in practice, I haven't actually managed to get it to work, and even if I did, as we want to also attempt moving to Veldrid we won't be OpenGL only anymore so we might not be able to use this feature anyway), and it also supports SVG rendering via an extension which ImageSharp does not currently support.


WARNING: This is an experimental version.
If you do use it, at least BACKUP YOUR PROJECT first.

This is an experimental version with some new features, which I need help testing.

The features:

- No Limits (almost)

This feature (developed by Crimson Wizard) enables you to use walkable areas/walk-behinds/hotspots/regions
up to a limit of 256 (imposed by the 8-bitness of the area mask in AGS).
To accomodate this feature, there were UI changes that had to be made, and these are integrated in the new
room layers UI.

- Room Layers

This feature allows you to view (and edit) walkable areas/walk-behinds/hotspots/regions/characters/objects/edges
in the same time (as opposed to only seeing one of them at a time, like we've seen before).
Well, not entirely though: walkable areas/walk-behinds/hotspots/regions still can't be seen together (as
they use masks and is part of the natives dll so I skipped it for now) but they can be seen along objects, characters,
and edges.

- Visibility

Each layer can be made visible/hidden by the push of a button.
In addition, for the objects/characters/edges layers each item in the layer can also be made visible/hidden by the push of a button.
This will only affect the editor, not the actual game.

- Locking

Each layer can be locked/unlocked by the push of a button.
In addition, for each layer, each item in the layer can also be locked/unlocked by the push of a button.
A locked item cannot be moved until it is unlocked, useful to prevent mistakes when designing the room.
This will only affect the editor, not the actual game.

How to use these features:

All those goodies can now be accessed from the layers navigation bar, seen here:

The navigation bar is a breadcrumbs control and should be familiar to whoever uses Windows Explorer (from Vista onwards) or Mac Finder.
Selecting the arrow next to the "Room" label will open a drop down with all the layers.
Each one of the layers has two buttons, a lock/unlock button and a show/hide button (the "eye" image).
In the image above, the characters, objects and hotspots are visible, and the characters are also locked.

Another example, here the walkable areas and characters are visible, and the characters are also locked.

Selecting one of the layers will add it to the navigation bar, and then clicking the arrow next to the layer
will show all the items in the layer.

For example in the image above we selected the objects layer which showed us all the objects.
We can see that the piano object is hidden even though the objects layer is visible. Also,
a few of the objects are locked meaning we can't actually select and move them.

Here's an example of when selecting one of the "masked" layers:

Here we selected the hotspots layer which showed us all of the hotspots. While we can't show/hide
specific hotspots, we can lock/unlock them.
Also the last button in the drop down is "Add New..." which allows us to add more hotspots (with no limits!).
There's also a delete button appearing on the last item (hBone in this example) allowing us to delete it.

Additional points of interest:

- Selecting a layer automatically makes it visible (though it can still be hidden after selection).
- Setting one of the "masked" layers to be visible will automatically hide the rest of the "masked" layers.
- The list box in the properties pane is now redundant as we can select the items from the navigation bar. I've kept it for now, but maybe it should be removed in future versions.
- The images were drawn by me. If anybody wants to create better images, here's what required:
Eye open, eye closed, lock open, lock closed and delete. The images should be 15x15 (png with transparency).
- For the "masked" layers, we only allow to delete the last item. Allowing to delete one of the items in the middle is a problem since we
don't want to change the IDs of the items (they can be used by the game developers).
- A possible enhancement in the future is to add drag & drop support to allow changing the ordering of the layers (and have walkable areas to appear
in front of characters, for example).
- Since the navigation bar is basically a horizontal representation of a tree, it will theoretically allow us to develop a feature that will allow
us to "group" multiple items (can be useful for example, to create composite objects).

All feedback will be appreciated.

Parking Goat presents:


It's the show you all love and cherish, "THE SCHMENDERSONS!"

And on tonight's episode, "THAT DAMN DOG!", Ron is finally fed up with Stephan's dog, Don Piano, and decides to do something once and for all.


* A "playable sitcom", need we say more?
* Now with full voice acting!

Where can I watch this episode?

This was previously an all exclusive bake sale title.
However, it is free now, and you can get it from this link:

Indie speed run is a game jam that happens in September, in which teams of up to four people make a game in 48 hours based on a random theme and an element they are given.
There's an entry fee of 25$ (per team).
The games are then rated by some very highly respected judges (Ron Gilbert, Notch, Yahtzee, and the list goes on), and prizes are given to the winners.
A really nice twist here, is that we get to pick our time which we want to join (as long as it's in September).
The team is currently me & Noa, and we can make ourselves available on any given Friday + Saturday on the month.

We would like to partner with an artist, who can commit one Friday + Saturday of September and work with us.
This is a partnership, meaning we'll get the theme, brainstorm an idea, and decide together what game we want to make (not necessarily in AGS).
We'll split the entry fee 3-ways (or 4-ways if we get a fourth person), and in the unlikely case we'll win something, we'll split the earnings as well.
If you want to join but can't afford the entry fee, that's ok too, just talk to us...
If you're not an artist but think you can contribute and want to join, also talk to us.

If you don't want to join forces with us, still consider joining the jam on your own, it should be fun.
Here's the website of the event:
Indie Speed Run.

That would require checking all the files every build for changes which might be problematic on a large project.

Not necessarily. You can use FileSystemWatcher, register for file changes events, and reload the sprites in the background.

General Discussion / Global Game Jam 2013
« on: 27 Jan 2013, 22:16 »
So, did anyone participate in last weekend's Global Game Jam 2013??

Our game can be played here.

It's sort of a mash-up between lemmings and The Incredible Machine, only the lemmings are blood cells and the machine is the human heart (the theme was heartbeat).

The game page on GGJ website is here.

Man, it was a lot of fun, but damn hard. I'm beaten, can barely think now...

What is the future preparing for us?
You tell me!
These are the rules:
1. Think of one aspect of the future that can change. Rephrase it in a "what if" sentence: "What if this and this will happen?"
2. Think of the answer, how will people's lives change?
3. Create your story around that.

For example:
1. What if there will be a hologram above people's heads showing their last score in a universal intelligence test?
2. It will motivate people to learn more and the average intelligence will rise. People who have lower scores will be ridiculed, they'll get frustrated and driven to crime. There will be an entire industry dedicated to cheat through those tests. There will be an underground movement that wants to stop it.
3. The story will tell of two best friends, where one tries to cheat through the intelligence test and the other joins the underground, and this difference tears them apart.

If you need more inspiration and haven't seen it already, I recommend watching Black Mirror.

The deadline: 18/11 (which, surprisingly enough, is in the future!)


Editor Development / New editor version for testing
« on: 08 Jul 2012, 22:43 »
Please backup your game before using this version!!!!!!!!

Edit: replaced with a new version that also fixes the bug described here

Edit 2: replaced with a newer version that fixes a bug and implements a few suggestions, both described here

Edit 3: replaced with a newer version that fixes a crash when clicking "go to definition", described here

Edit 4 (18/7/12): More fixes described here!

Edit 5 (20/7/12): More fixes described here!

Edit 6 (21/7/12): More fixes & improvements described here!

Edit 7 (22/7/12): Fixed the crash described here!

Edit 8 (29/7/12): Committed the changes to the 3.2.2 branch.

Hi, I've added a few features for the editor.
Please test and/or provide feedback.
Once I see everything is well I'll commit to 3.2.2 development branch.

The features:

Added folders for characrers, dialogs, inventory items, guis, rooms, scripts and views.
Added new menu items for all folders to move up/down,
and the ability to drag/drop files to be before other files.

For scripts:
- Script and header files are now combined into one and can be expanded/collapsed, similar to room settings & script.
- I removed the ability to move files up/down, this can now be done with normal drag/drop (and not only for scripts).
- Also removed the "exclude script" option, it made things a mess and I couldn't understand why it is needed.
If anybody knows, please tell me.
- The order of the scripts (for script dependencies) is the same as it was before, a script can use all the scripts
above it.

For rooms:
- The "Sort room by number" now sorts within folders. I actually don't understand why this feature is needed, if anyone
knows please tell me.

Find all usages:
Added a menu item to find all usages for characters, dialogs, views, inventory items and global variables.
It won't actually find scripts that use the character id (or dialog/view id), just scripts that use the actual
script name of that specific object.

An example of the folders and the "Find all usages" menu item

Navigate (in tree):
Added a menu item for almost all document tabs, to navigate to their node on the project tree
(can be useful for large projects).

An example of the "Navigate" feature.

Goto Line:
In script editor, pressing Ctrl+G will now open the "Goto line" dialog, you can select a line number and the
editor will jump to that line. Since "Ctrl+G" was already used as a shortcut to open the global script,
I replaced that shortcut with Ctrl+Shift+G (and also replaced the shortcut to open the global header
from Ctrl+H to Ctrl+Shift+H for consistency).

An example of the "Goto Line" feature

I've refactored some code to make it more Mono-compatible, so that it could run properly when compiled with Mono
(cross platform implementation of .Net).
There's still a lot more work to be done (even without mentioning the native dll), but it's at least a step
in the right direction.

The changes I've done-
  • I replaced in tons of places the hard-coded "\" used as a directory separator with the directory separator of the OS,
    so that it'll also work on Linux machines.
  • I switched the code that detects Shift & Ctrl keyboard presses with a managed solution, that should be supported
    by MONO- this is used when selecting colors in the palette, for example.
  • I switched the code that detects when the Room Designer is focused (used when pressing the up/down arrows to pan
    the working area) to a managed solution, that should be supported by MONO.
  • I switched the code that copies arrays in memory to a managed solution (used when loading a sprite from file).
  • I partially disabled some features only when running with Mono, since I couldn't see a way to code them without the
    Win API:
       - Breaking in debug will not automatically set the editor to the foreground, the user might have to click on the window
       - Notifying the user on file changes externally if the editor is in focus will not happen. It will happen when
         the window is activated, so I hope it won't be too annoying.

Completed Game Announcements / 9 Months In- Now FREE!
« on: 21 Jan 2012, 16:17 »
Parking Goat presents:

The Story

Life is hard when you're a prisoner, wrongly accused.
When you're pregnant in prison, life can be even harder.
You will want to give up.
But when you are then accused of a new crime, the murder of one of the inmates,
you finally get the desire to fight back, and prove your innocence once and for all!

The Trailer

The Screenshots


�A Twisted Story
�A Grabbing Atmosphere
�Beautiful Artwork
�Full Voice Acting
�Multiple Endings
�Original (yet small) Soundtrack

The Team

Background Art- gameboy
Character Art- noavana
Music & SFX- noavana
Cast- noavana, Saren, cat, Ron Anshel, Mati Goldstein, Reut Goldstein.
Testing- david, Ron Anshel, cat, Ponch, Saren, gameboy.
Modules- Tween (by Edmundito), Smooth Scroll (by Ali) and Credits (by SSH).

The game was originally made for the AGS Bake Sale, but now it's available for free!

Download the game!


This utility is supposed to help in situations where you deploy your game but it won't start for some of the players since the configuration you chose initially is not supported on their computer.
It allows the developers to configure a pre-set list of desired configurations for their game, from the one that will provide the best experience to the least favorable one, to try only if all other configurations are not supported.

How does it work?

1. Put the AGS Auto-Detect executable in your game folder (the executable is located in AGSAutoDetect\bin\release, only the exe file itself is needed).
2. Instead of running your game file, run AGS Auto-Detect.
3. AGS Auto-Detect searches your system for the installed DirectX version on your computer, and for all supported resolutions on your computer.
4. It then reads the existing configuration file and checks if the existing configuration (both DirectX and resolution) is supported by the hosting computer. If the existing configuration is supported, it simply runs the game.
5. If not, then it goes over a pre-set of desired configurations, from the most wanted to the least wanted, until it finds a configuration that is supported by the local computer. If it finds it, it will edit the configuration file, save it, and run the game.
6. If no supported configuration is found on the computer, it will default to the safest configuration possible (that I know of): DirectDraw & windowed, save it to the configuration file and run the game.

System Requirements

The only requirement for AGS Auto-Detect to run is DotNet 2.0 installed on the local computer.


The source code is provided, so that you can configure several or more of the following items. You'll need Visual Studio 2008, and then double click on AGSAutoDetect.sln to open the code.
When you finish doing your changes, right click on the solution and click build, the executable in the Release folder should change to include your changes.

1. Icon. You'll probably want to set an icon and rename the program to your game name, so that people will double click on AGS Auto-Detect to play the game (renaming the original game with AGS to an obscure name will follow).
To set the icon, select the project, right click on it, select Properties, select the Application tab, and you'll see an option to select the icon.

2. Set the desired configurations for your game. I've provided a default list of preferred configurations for each resolution as I saw fit. My knowledge on the subject of how to make the game look the best is limited though, so if you want to change you can do it via changing the source (also, if you have better knowledge than me, please share it so I can upload a better version with better defaults).
Each game resolution comes with its own set of defaults, so to see the default list, you must know your own game resolution.
Let's take for example the 320x200 resolution. In the project you'll see the Desired Configurations folder, open it and then open the Resolutions folder under it. Double click the R320x200.cs file, and you will see the following code:
Code: [Select]
public List<ConfigFileData> GetDesiredConfigurations()
            return new List<ConfigFileData>
                new ConfigFileData { IsD3D = true, Filter = FilterType.StdScale2},
                new ConfigFileData { IsD3D = true, Filter = FilterType.StdScale2, Letterbox = true},
                new ConfigFileData { IsD3D = true, Filter = FilterType.None},
                new ConfigFileData { IsD3D = true, Filter = FilterType.None, Letterbox = true},
                new ConfigFileData { IsD3D = false, Filter = FilterType.StdScale2},
                new ConfigFileData { IsD3D = false, Filter = FilterType.StdScale2, Letterbox = true},
                new ConfigFileData { IsD3D = false, Filter = FilterType.None},
                new ConfigFileData { IsD3D = false, Filter = FilterType.None, Letterbox = true},
                new ConfigFileData { IsD3D = true, Filter = FilterType.StdScale3},
                new ConfigFileData { IsD3D = false, Filter = FilterType.StdScale3}

The first item in the list is D3D and x2 filter, so that's the first configuration that AGS Auto-Detect will try (assuming the one in the configuration file was not supported).
If that configuration is not supported, the second item will be tested, which is D3D, x2 filter and letterbox (which effectively changes the 320x200 resolution to 640x480 resolution).
If that fails, the next item will be tested, and so on.
You can add, remove and change those items as you see fit.

ConfigFileData is the object that contains the desired configuration, and besides the properties that was set in the default, other properties that can be set include:
ColorDepth, Windowed, RefreshRate, SmoothScaledSprites and DowngradeGraphics.
All of these has appropriate settings in the setup program we all know and love.

Each property of these that was not set, will be taken from the existing configuration that was saved to file.
That means that in my example, if the letterbox was checked when you deployed your game, there isn't really any difference between the first item and the second item in the default list.

3. How the game will be found and run.
AGS Auto-Detect assumes that besided itself and the setup file, the only other executable in the folder is the game file, and so it will run it. This will probably work for almost all AGS games, but if you happen to have another exe file in your folder, you might want to change that logic. Simply double click the Game.cs file, and alter the Run method with the logic of your choice.

What's not in there (yet)?

1. Adding side borders to wide screen monitors. AGS has a more complicated logic when this option is checked. It somehow searches itself for a fitting resolution and adds the borders. Since I don't know how this logic works, I can't deduce if a configuration with this option on is supported or not, so for now I didn't add it.
If someone here knows how it works, please tell me, so I'll include this option as well.

2. Smooth scaled sprites (and probably other features as well) require a "fast CPU" in order to run. Since I don't know how fast the CPU should be so that I can reasonably assume that it will work, I don't check against it at all.
If someone here knows what is a reasonably fast CPU, please tell me and I'll see how to add those tests as well.

3. Older AGS versions. Ideally I would want to support AGS 2.7 and upwards, but I haven't really done tests, and I don't know what changes the configuration files have between those versions. If anyone knows (or wishes to test), please tell me.

Since there are tons of available system configurations in the world, there is a 100% percent chance that it won't always work as intended.
So please, if you can run it on your computer, on your game (or other games), and with different initial setups and give me feedback, I would appreciate it.
If you do find something wrong, please send me the following:
1. What's your game resolution?
2. The original configuration file your game has (acsetup.cfg).
3. Did you make any changes to the source?
4. There's a log that's generated called AutoDetectLog.txt, which I will also need.

Since almost no testing has been done so far, I recommend not to use it on actual released games as of yet, until I will get sufficient feedback to assume that it works in most cases.


I think I'll go with Creative Commons License.
Meaning you can use it in freeware and commercial games, credits will be appreciated but not necessary.

Future Plans

In following versions, I thought of also including a new setup program, that will only present to the player with the options that are supported on his computer, and will also be configurable so that unwanted items can be hidden (while still maintaining a nice look to it).
Any thoughts on this are also welcome.


Get it here:
AGS Auto-Detect

I've encountered a bug with the new audio system.
If the user is skipping a cutscene which plays a sound, it can crash AGS (it has like 50% chance to crash).
If you use cutscenes, and the new audio system, you can workaround it by creating a workaround function in the global script:

Code: [Select]
AudioChannel* PlaySound(this AudioClip*,  AudioPriority priority,
  RepeatStyle repeatStyle)
  if (Game.SkippingCutscene) return null;
  return this.Play(priority, repeatStyle);

Declare it in the header:
Code: [Select]
import AudioChannel* PlaySound(this AudioClip*,  AudioPriority priority=eAudioPriorityHigh,
  RepeatStyle repeatStyle=eOnce);

And then replace all usages of the kind aMyAudio.Play, with aMyAudio.PlaySound.

The AGS BAKE SALE Presents:

The Story

Life is hard when you're a prisoner, wrongly accused.
When you're pregnant in prison, life can be even harder.
You will want to give up.
But when you are then accused of a new crime, the murder of one of the inmates,
you finally get the desire to fight back, and prove your innocence once and for all!

The Screenshots

The Team
Background Art- gameboy.
Character Art- noavana.
Cast- noavana, Saren, cat, Ron Anshel, Mati Goldstein, Reut Goldstein.
Testing- david, Ron Anshel, cat, Ponch, Saren, gameboy.

Modules- Tween (by Edmundito), Smooth Scroll (by Ali) and Credits (by SSH).

The Cause
This dark cookey is part of the AGS BAKE SALE.

General Discussion /
« on: 28 Sep 2011, 09:07 »
I have been working on it on and off for several months, but now it is finally up!

My very own website:

This is a place to hold my games in a single place, a blog I am planning to start and game reviews I am planning to do.
Nothing too fancy, but please take it for a spin if you have the time.
I will also accept guest reviews so if you want to do a review and have nowhere to put it, look no further!

And one last thing, if you have a blog of your own with rss and want to join my newsfeed, please pm me, and I will gladly put you there, if you are not already there...

Hints & Tips / Stranded
« on: 21 Jul 2011, 21:47 »
Hi, I am really enjoying this game but I am stuck!

I am hiding behind the desk and I see a part of beast next to me, but I have no bullets in my gun.

I am carrying an empty wallet, a mobile phone (blocked), a chewed piece of gum, a car key, a level 9 id card, two dismembered hands, an unlit torch, a jacket, a stapler, pens, a note, blu-tac, and an empty handgun

What do I do now???


I have a new beta version of the AGS Editor for you to test and give feedback.
The layout mechanism has been re-hauled and integrated with DockPanel Suite.


Here's a short video demonstrating the new capabilities:

View Demo Video!

Among the new features:
* All panels are moveable.
* All panels can be docked to the screen edges, and can be hidden from view (and restored).
* View Room editor and its script at the same time without having to switch tabs.
* A new "Window" menu to control all the windows.
* The layout of the panels is saved when closing AGS (to Layout.xml file), and restored when opening AGS (not including the project's documents)
* New icons for those new windows made by the incredible cat!

Known Issues
* When the script is in floating mode, some of the shortcuts don't work (Ctrl+S, Ctrl+F and Ctrl+H).
* Still, the old limitation of "only one room can be loaded at a time" remains.

Help Needed
Other then testing and feedback, which I would obviously appreciate a lot, there are now several needed icons

Help not needed anymore thanks to the magnificent cat.

Download the demo here!
Mirror here.

Adventure Related Talk & Chat / Adventure games for iPad?
« on: 08 Jun 2011, 19:06 »
Well, I just got myself an iPad, and I'm looking for some adventure games to go with it (preferably free, cause I am a cheapskate)...

So, any recommendations?

General Discussion / What's up with ImageShack?
« on: 05 Mar 2011, 14:41 »
I started seeing these "unregistered domain" frog images instead of the real images.

That was just an example, that's true for all their images, even my own!
I can only see the images if I login to imageshack...

Am I the only one?
That can't be, I've seen this with 3 different computers, but no-one else is complaining...
Also googled and found this:
This is really irritating, I've switched to use Imgur instead.

Hello, it's time for another hourgame competition, and I'm carrying on with the fantastic idea of Wyz that helps you choose your own time of submission, and thus will hopefully allow for more entries.

So don't be shy, pick the time that you desire, get the theme, and let the game making begin!

The wonderful journey starts Here!

down to the boilerplate:
Make a GAME in an HOUR, with a THEME.
Whenever you choose but before Saturday the 15th 20:00 BST
From this web form on to where ever you bring it!
YOU, not ME. I'm setting the THEME.
For FUN and the FUTURE including the future of fun or FUNTURE.
TerranRich's SHUTUPLOAD.

Well, running this code when there is no sound will cause the game to crash:
Code: [Select]
AudioChannel *audio = aMusic.Play();
audio.Volume = 70;
And the reason for this is that Play will return null if there is no sound.

I think the approach was (and if not, it should be) that the developer wouldn't have to take care of such issues, this should be handled inside the engine and hide it from the developer.
The audio.Volume = 70 line should simply do nothing in such a scenario IMO.

Warning: This games contains some adult content (yet very immature at the same time)

Well, since ddq & Ponch decided to raise the bar of OSD games using two rooms of gameplay, I have concluded that the next logical step would be to lower the bar back and use one room, and not only that, but to use an already existing room from ben304's game.

So, without further ado, I'm introducing here:

OceanSpirit Dennis: Ray of Hope
A Square Penix production

- Poor voice acting
- Poor new art & awesome old art
- Original Music
- A whole new character
- An attempt at a real RPG fight
- More confusion to the OSD universe

Special thanks goes to Ponch, who's been a huge motivator and pushed me to finish this as soon as possible. For this reason you can also blame him for every bug, missing feature, or simply everything about this game that you didn't like and assumed it was my fault (but it's not, it's all because of Ponch).

Download the game here.

Source code is available here, AGS 3.2 is required to open it.

Pages: [1] 2