Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Tarnos12

#1
Recently finished a project for a client.
Original game had real photos as character faces, which are replaced with 2D drawings for a public release.


Your Dad has lost his important Red hat, help him find it for his show!
It's a short adventure game, less than 30 minutes, can probably finish in 5 if you know what to do.

Supported languages: English, Georgian.

Link: https://tarnos12.itch.io/red-dad-redemption

Making the post so I can put it into game database as it's one of the links it asks for :D
#2
Quote from: Crimson Wizard on Mon 24/02/2025 10:46:45
Quote from: Tarnos12 on Mon 24/02/2025 10:23:28Yes it's on a button press, because I don't know how I can automate GUI translation without a script.

You can detect game translation in game_start, and change fonts there.

I don't understand what do you mean with "2 separate builds" though.

Ah that was the idea to manually change translation of GUI and make it's own build.
That was a last resort if nothing else worked(not that it would make a difference after I did some work on that)

I will look into detecting the game translation then and see if that works.
No idea why the other person couldn't see GUI translation, afaik it doesn't require installing any fonts on the system.
#3
Quote from: Crimson Wizard on Mon 24/02/2025 10:01:54@Tarnos12 I don't see any reason why would anything work differently for other people with this script.

QuoteI am not sure which config settings could be changed and where.

I meant translation choice, for example. But if you have new translation set on a button press in game, then this is less important.

Yes it's on a button press, because I don't know how I can automate GUI translation without a script.
if there is a way to do that then I'd rather have 2 separate builds/translation in game config.
#4
Quote from: Crimson Wizard on Sun 23/02/2025 06:34:29
Quote from: Tarnos12 on Sun 23/02/2025 01:08:23Btw, is there a requirement to see the font properly on a built game on Windows?

Someone else is trying the game and they can't see GUI font, but speech font works fine.
But when I test it, everything works.

Please give more details.
How are the fonts imported.
How is GUI font set.
How do you run the game, which config settings do you use.
How do they run the game, which config settings do they use.
Double check that you test same compiled version of the game.

Not sure what are the options on importing fonts.
We just use the link above with TTF font.
I just right click and import the font then right click again to create a font.
Then changed it's size multiplier and used auto outline.

GUI font is changed with this:
Code: ags
function Button3_OnClick(GUIControl *control, MouseButton button)
{
    Game.ChangeTranslation("Georgian");
    for(int i = 0; i < Game.GUICount; i++)
    {
        GUI*guiTest = gui[i];
        
        for(int j = 0; j < guiTest.ControlCount; j++)
        {
            Button *button = guiTest.Controls[j].AsButton;
            Label *label = guiTest.Controls[j].AsLabel;
            if(button != null) button.Font = eFontFont3;
            if(label != null) label.Font = eFontFont3;
        }
    }
}

Config settings are default, the game is run with game.exe(not the setup.exe)
I am not sure which config settings could be changed and where.
#5
That looks good, similar to what I did but better :D

Btw, is there a requirement to see the font properly on a built game on Windows?

Someone else is trying the game and they can't see GUI font, but speech font works fine.
But when I test it, everything works.
#6
Quote from: Crimson Wizard on Fri 21/02/2025 07:24:02With the Unicode support there's no difference what the translation language is, the rules for fonts is all the same. The Font's layout and game/translation text format should match each other. Following things matter:

1. Is the Font unicode-compatible, and not, for example, ANSI-125x.
2. What is your translation's encoding: how TRS file is saved, and what is set as Encoding option in TRS.
3. How do you assign these fonts in case of language change. Do you use translation settings, or script this (and how)?
https://adventuregamestudio.github.io/ags-manual/Translations.html#additional-options

Checking the font preview is useless currently, as it only displays first 256 characters, but in Unicode fonts the letters may occupy slot indexes of 1000+.
Do you check results by font preview only, or by testing the game too?
Please give links to actual fonts that you used, I don't want to check any random fonts on that page and guess which did not work for you.

EDIT: btw, I don't think that Georgian language uses Cyrillic letters.

I will try again! I mostly used preview(but not only) so this might be the issue :D

EDIT: That actually worked!, I just need to figure out how to change font for the GUI, but I assume that's done manually with a loop?
#7
Hello,

I am trying to import a Georgian font which from what I've read is "Cyrrilic" font that should be supported by ttf(256 max characters)
But when I import any of the fonts I found so far, they are not usable(sometimes some of the characters look good, but most of them are squares or some other weird characters)

This is the font I tried just now:
https://fonts.google.com/selection?query=Georgian&lang=ka_Geor&script=Geor

Those are the results:(from some of the fonts)
https://gyazo.com/6c5928a68b4bda4d0b56e4edb66a5d20

The game by default is set to use UTF-8 for Text.

What am I missing and how can I import the font properly?

This is meant to be used with in game translation where I can change the game language from English to Georgian.
But if it's necessary I am fine with making a separate build for each language.

Thanks!
#8
Quote from: Crimson Wizard on Mon 03/02/2025 10:38:02
Quote from: Tarnos12 on Mon 03/02/2025 10:01:02How do I reload a room? Rebuild all files?

For example, open another room, then back the previous one.


There's a fixed version here:
https://cirrus-ci.com/task/6571235825418240

but it also contains some major rewrite in the engine, so if you use it, please keep an eye on anything strange.

Is it possible to go back if something happens in this new version?
I will give it a go tomorrow since I need to make a build today and can't risk it :D
#9
Quote from: Crimson Wizard on Sun 02/02/2025 15:44:10I just tested again, and it does work if you reload the room. But you need to actually reload it, not just close the tab and open again.
This has to be done each time there are new objects, because each new object won't have a script module reference, and reloading a room only fixes already created objects.
How do I reload a room? Rebuild all files?
That seem to have worked but I still have to click 3 dots to add an event to actually add it.
It's probably faster to do it manually.
#10
Quote from: Crimson Wizard on Sat 01/02/2025 09:31:28EDIT: it fixes itself when you load the room for the second time.
I suppose this problem either appears when creating a new room from template, or upgrading an existing room to the new version.


I couldn't make it work by reloading a room, in my case it's a regular room with blank template.
I have to manually create a script in a room.
#11
Hey, I have an issue with adding an event to the object:
https://gyazo.com/a37867db67a0b6312ba0484f1a56543f

I have to add it manually to the correct room in order for it to work.
Afterwards the "script module" will automatically fill with correct path(in my case Rooms\1\room1.asc)

This is on Version 14:
AGS Editor .NET 32-bit (Build 4.00.00.14) ** BETA VERSION **
v4.0.0, January 2025


Btw, I like the change with script modules!
#12
Quote from: heltenjon on Sun 19/01/2025 23:06:44I gave this comment on the gamepage at the time:
QuoteThis is a charming investigation game. I liked how the puzzles/tasks spin out from the people in the small town and their relationships. Also good graphics and animation. Well worth a go.

Yep I remember that comment!
#13
Hello,


This is a recent game that Jermaine and I have worked on.
It comes with higher quality art/animations compared to previous game as well as Voice Acting!

I did programming/AGS work.
Jermaine did everything else(art/music/animations/design etc)

Jermaine forum profile: Jermaine_GameDev

Game link: https://jermaine-mcgee.itch.io/big-trouble-in-little-river
Database link: https://www.adventuregamestudio.co.uk/site/games/game/2822/

This game is also with Karina as the main character, this time her car got stolen :D
(Seriously what's going on with her car issues!)

Follow Karina story as you try to uncover the truth behind her stolen car as well as some other secrets!
#14
Completed Game Announcements / Painted Hills
Sun 19/01/2025 22:52:52
Hello,


Jermaine and myself have worked on this game about 2 years ago.

I did all the programming/AGS work and Jermaine did everything else including design/art/sound/music etc.

Jermaine forum profile: Jermaine_GameDev

Game link: https://jermaine-mcgee.itch.io/painted-hills
Database link: https://www.adventuregamestudio.co.uk/site/games/game/2701-painted-hills/

The game is about Karina and her broken car, help her fix the car so she can leave the town :)
#15
Recruitment / Re: Offer Your Services!
Wed 05/06/2024 20:33:32
Hey, I have 3+ years of AGS experience with commercial games and ~7+ years of game dev experience.
I worked on 4 games so far in AGS engine and many more in other game engines.

Fiverr Portfolio
Cardd Portfolio

I offer my services as a game developer.
I can write scripts and use the engine to make your game.

Recent project I worked on: https://www.adventuregamestudio.co.uk/site/games/game/2701-painted-hills/
(Update 2025) New project: https://jermaine-mcgee.itch.io/big-trouble-in-little-river

Contact me on:
Discord: tarnos12
Fiverr: https://www.fiverr.com/users/tarnos/
#16
Quote from: timid_dolphin on Sat 30/07/2022 05:04:35
My theory is that if you mostly stick to this design style keeping track of game state should isn't really necessary, but you need to keep track of specific things which matter, eg what time of day it is, what information does a specific character have, what inv items does a character have, has the player witnessed something (eg a cutscene) yet, that sort of thing.
We are trying to avoid having to keep track of that.
I mean you still have to keep track of it, but you don't actively have to remember every little detail when you write dialogs etc.
#17
Quote from: newwaveburritos on Fri 29/07/2022 20:54:43
A secondary question here which is more of a planning and strategy question than anything:

Do you guys have a story written and ready to go before you begin or do you make it up as you go?  Or a little from Column A and a little from Column B?  I'm starting to think that a large part of my problem with this is because I don't really have a whole story planned out but rather I just kind of make it up as I go from a vague outline.

In our case, we always have a full story ready with most/all puzzles.
We might add/remove some things during the development.
#18
Quote from: Crimson Wizard on Fri 22/07/2022 16:27:50
The solution to a non-linear story tracking (may be used for linear as well) is a Node Graph. You already sort of have one, only scripted in a workaround way. If scripted literally, it may also solve an issue of having to script story switches "in place".

Following is a very rough outline, but I hope it should illustrate the idea. I apologize for a messy reply beforehand, but I fear to not have enough spare time to write all this thoroughly.

Thanks, that looks really good.

I need to take my time reading through this few times, but it seems like a great solution so far.
It basically removes the need to think about numbers and instead you think in terms of the node/story branch.

This will probably be the next step in improving the story progression in my games.
I will play around with it in the next few days as I have a bit of time before I will be busy and I will update with my progress :D

Also I did read about Nodes in some C# course I took in the past, it is one of the data types(Google says it's called a "Linked List")
I had it in the back of my head for a long time, but this might be a good time to try it out.
#19
Quote from: Danvzare on Fri 22/07/2022 15:59:28
Hey, I use a number to keep track of the story as well.  :-D
Sometimes though (when I'm feeling too lazy to declare a single variable) I use a location of a character. Since I know I can just throw a character into the main menu room and then check that to see where you are in the story.

The only major problem I've encountered so far with using a number, is if you decide to expand on the story from the middle. You either need a make a new variable or push every other check up by one. (And looking for every time that variable is checked can be a pain.)
Another problem is that it can sometimes be difficult to know where you are in the story with a simple number, but I usually include some notes in the global script, so I know where in the story each number represents.

The solution that worked for us was to write a story in larger chunks.
Instead of incrementing the story by 1, do it by 10.
Or separate it in different chunks like:

0-250 = Day 1 Morning
251-500 = Day 1 Afternoon
501-750 = Day 1 Evening
750- 999 = Day 1 Night

Then You just write a story in smaller chunks like ID 10,20,30.
This way you can fit other things later on.
And if you expect the story to get even bigger then go with 0-2500 and increment story parts by 100 to give yourself more space.
#20
Quote from: newwaveburritos on Fri 22/07/2022 05:28:57
How would you use your system to track parallel states?  I guess you wouldn't really need to exactly since you could just use one for each and then check both of them when it's time to escape the dungeon or whatever.

There are at least 2 ways I can see with the current system.

1)
Code: ags


// Chapter 1/Day 1
if(StoryProgress.GetId() == 1)
{
    if(StoryProgress.GetId(eStory_Hallway) == 2 && StoryProgress.GetId(eStory_John) == 2)
    {
        StoryProgress.SetId(2);//Change chapter/day to 2.
    }
}
//Chapter 2/Day 2
else if(StoryProgresss.GetId() == 2)
{
    //Chapter 1 is no longer of concern.
    //But this comes back to the issue where you might have interactions that do not change between chapters/days.(which is not too bad, you should call separate dialog which takes care of that or even separate dialogs into chapters/states)
}


2)
Code: ags


//Hallway + John story are at 2.
if(StoryProgress.GetId(eStory_Hallway) == 2 && StoryProgress.GetId(eStory_John) == 2)
{
     //John is ready + hallway is ready
}
// Since previous condition failed, and if this succeeded that means John wasn't at story 2, but hallway was.
else if(StoryProgress.GetId(eStory_Hallway) == 2)
{
    // John is not ready yet
}


3) This is similar to what I do currently

Code: ags

if(InteractedWith(eCharacter_John)
{
    if(StoryProgress.GetId(eStory_John) == 0)
    {
         cJohn.SayCustom("The game just started, it's probably first time we talk");
         StoryProgress.SetId(1, eStory_John);//Progress John story
     }
     else if(StoryProgress.GetId(eStory_John) == 1)
     {
          cJohn.SayCustom("Go talk to bob");
          //We do not increase john story id, it will be done at different point, he will keep repeating this dialog until we make progress elsewhere.
      }
    //John story requires to be 2, you need to do something else to progress it, like  talk to Bob or combine items or enter different area etc. 
    if(StoryProgress.GetId(eStory_John) == 2)
    {
           if(StoryProgress.GetId(eStory_Hallway) == 2)
           {
              //John is ready + hallway is ready
           }
          else
          {
              // John is not ready yet
          }
     }
}


You can also nest if statements which I like more as long as I don't go too deep(and you probably don't need different state for all different sub states.
For example, hallway, john, kitchen, vase.
There is no need for Bob to say 20 different things based on the mix of those 4(or more) states(Unless you really want that I guess)
In a 3rd example I am separating interactions into their own states(if they have a state of their own, usually all characters do since they are going to say different things and objects might just use "Game.DoOnceOnly")


Also there is a module that allows you to write multiple dialogs in 1 line that will be used next time you talk to the character, I think it's called MultiText:
Code: ags

cPlayer.SayLoop("Hello|Hi|Can I help you?");//Each time you interact with a character different message will play.
SMF spam blocked by CleanTalk