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 - Crimson Wizard

#13161
Engine Development / Re: AGS engine iOS port
Fri 29/06/2012 22:24:36
This is a problem the engine would run sooner or later, since it wasn't made with having portability in mind.

Unfortunately my only suggestion is rather for the future versions of the engine - to implement totally virtual controls that could be rebound from game setup, for example.
#13162
I have a question: was there anywhere a discussion or any attempt to make a list of core features AGS engine needs? I do not mean suggestions like new script function or different editor look, but more general ones?
This is too early for actual implementation, but it would be probably nice to begin composing such list for future reference. I believe that is actually important, since adding random features without having principal direction in mind would eventually clutter both engine and editor.

I would list some here to show an example of what I am talking about.

1. I'll start with something ProgZmax mentioned in other thread:
Quote
Reformatting game saves so that they continue functioning after game re-compiles, patches, and work regardless of resolution.
In fact that isn't only about savegames. Literally everything in AGS is being serialized in such a way that it would be impossible to change a data structure (like add new variable) without breaking compatibility with the game made in previous version, let alone saved game.
Thus, I believe, primary concern should be to change the way ASG writes and reads data (game data and in-game saves) and make each data struct (or at least each main data struct) to detect what is the version and/or format of data it is loading and store it appropriately, with corresponding conversion if needed.

2. Removing static limits.
AGS uses static-size arrays for many things, and there's practically no more real sense in that. I don't mean these limits aren't enough, I mean there's no need in them since we may use dynamic arrays (classes), so that no one would ever bump into such limit.

3. Class system.
This is not only about rewriting existing sets of global functions and variables into classes (Character, Room, Hotspot, etc). There could be things that are better managed by classes to provide extensibility.
Think of Speech Style class, for instance, or Room Transition class, with possibility to add corresponding items to game project tree in the editor and customize them as you wish.

4. Engine plugin interface.
Apparently plugin system is made a bit awkwardly; there is a bunch of data structs, that mimic internal engine data structs, accompanied by commentary telling not to change anything in them (otherwise game will crash). Basically when a plugin uses IAGSEngine interface to get game data, plugin system plainly reinterprets internal data address as a pointer to corresponding plugin struct. I understand CJ had certain considerations when he was writing it this way, but if we are to improve the engine, this system should be probably enhanced as well.


Please, tell your thoughts.

PS. And can anyone please explain me at last, are there any development coordinators in charge here? Speaking of plans while there's no one to approve them is like standing at the town square yelling and hoping someone will listen  :undecided:
#13163
Quote from: Anian on Fri 29/06/2012 13:22:47
...so a radioactive zombie horror? I'm ok with that, keep it up.
Zombies are not undead. They are people who took a lot of radioactivity from TV.

Quote from: CaptainD
For the sake of this thread, I think you should be called a Grammar KGB Agent instead of Grammar Nazi.
or Grammar Commi?
#13164
I can imagine running fridge.
You know....
..... undead fridge.
#13165
@tzachs, I am not going to fight for my suggestion like it is sacred. :)
And actually that isn't exactly something I got used too, it's rather a combination of what I was used to and new ideas.

Quote from: tzachs on Thu 28/06/2012 22:26:09
Without getting into the religion debate, technically we can't officially release a new version without one of the website admins putting it on the website download page, as far as I know the only website admin is CJ, hence we must wait for CJ.
Well, frankly speaking, I just could not understand what were people planning here. It was a bit strange to see that you have had some development, then it was stalled and nothing is going on anymore.
I thought it was only me who did not know about real CJ plans, if I knew you do not know, I would post that PM as soon as I received one.

Also it looks like you are lacking coordination between each other.
For example JJS mentioned here that he did not get any proposals from community to merge branches:
http://www.adventuregamestudio.co.uk/yabb/index.php?topic=45572.msg621559#msg621559
#13166
[breaking news]

SVN repository, Common and Engine folders
*.cpp files count: 37

"refactory" branch, Common, Compiler and Engine folders
*.cpp files count: 260

Dum-dee-dum  (roll) (roll) (roll)

[/breaking news][/silly mode off]
#13167
Is the function room_RepExec actually bound to corresponding event? This is done on the Room editor, on properties/events panel.
#13168
Quote from: monkey_05_06 on Thu 28/06/2012 08:12:05
Yes, but only if bikeman is indeed the player character. :P

AHEM.

Quote from: maximusfink on Thu 28/06/2012 03:38:46
bikeman is the player character.
#13169
Quote from: maximusfink on Thu 28/06/2012 03:38:46
But I don't see why I shouldn't be able to have the cursor itself.
I've read this several times and couldn't figure out what do you mean by "not able to have the cursor". Then I read monkey's response and realized you might be meaning that you cannot move the cursor with the mouse. Is that the case?
Then that's surely because you are blocking game execution by Wait command, as monkey has pointed out. Wait simply "pauses" most of the game action, including player controls.
What you should possibly do, is:
1. When player interacts with gun, make cursor change; and also make the timer start!
Code: cpp

#define GUN_TIMER_ID   10  // an optional value
function gun_Interact()
{
    gun.Visible = false;
    bikeman.ChangeView(3);
    mouse.Mode = eModeCrosshair;
    SetTimer (GUN_TIMER_ID, 500);
}

2. When player clicks somewhere, while cursor is set to crosshair, make it shoot.
3. When enough time has passed and regardless of whether player made a shot or not, change cursor back and put the gun back (or something like that, depending on what you want). Timer checking should be probably done inside room's "repeatedly execute" function:
Code: cpp

function room_RepExec()
{
    if (IsTimerExpired(GUN_TIMER_ID))
    {
        bikeman.ChangeView(1);
        gun.Visible = true;
    }
}



As a side-note, I may recommend to use "player" instead of using actual character name, i.e.:
Code: cpp

player.ChangeView(3);

This may come handy if for some reason you'll decide to change character name in the future.
#13170
I think there's a slight resemblance with 5DAS in these screenshots... a little boy on tree, and a red car... is there some deeper sense in this? :P

Graphics look fun btw!
#13171
Quote from: Ghost on Wed 27/06/2012 19:22:11
Fun fact: "Nezhyt" is just close enough to "Netzhaut" (German for retina) to make me smile ;)
Nezhyt is Undead in slavic tradition; literally translated as "Non-live" :)
#13172
A lot of games use right-click for changing active action (cursor type) or making character "Look at" things (latter is true for most of Ben304's games for instance).
Is it something that you need?

Specifically something like context menu was implemented in 7 Days a Skeptic, unless I am mistaken.
#13173
Quote from: Frito Master on Wed 27/06/2012 15:39:08
Dmitri is experiencing the worst hangover ever.
...all he has got is a bad liver and a rundown apartment...
No family, no friends, no job.
...just like his brother, tries to surrender to the daemons of the past.
The bitter, dark, emptiness of alcohol is all that he seeks.
Isn't his name Dmitri Payne? :D
#13174
People, you are making a good discussion here :), but I have to point out you are missing my original point.

I'll try to elaborate.
You see, some of you mentioned that it is usual to be overexcited about first creations, it is natural for young to do silly things, and the only difference is technical opportunity to spread one's creations that older generation did not have.
My point was, that this technical opportunity changed the way people think.
Specifically, every man has something we may call "internal circle" - a range of people he feels comfortable with: friends, parents (not always :)).
When the person accomplishes certain job for the first time he definitely becomes excited, we all know this. When I made my first "game" with AGS I felt very excited too, although I was, I think, 25 or 26 years old already and had some experience in game making (including 3d games). What have made me NOT post my game here? I did had excitement - right, but it was that none of people here were my friends, and I did not feel like I can show them something that was definitely low quality without looking like an idiot.

Now, those, from new generation, they are born in the age when you can, for example, see where another forum member lives on Google maps or Panoramio, chat with guys who are much older than you or live on opposite side of planet. This make their "internal circle" widen to practically unlimited degree, since they do not have similar psychological constraints as we did in the past.
I mean, it might be younger people definitely understand that their first works are objectively of lower quality than something that is produced by experienced devs and big companies - after all they CAN see the difference themselves, don't they?
But since they do not limit their "intimate" area to their close friends who live in the neighborhood, they do not feel bad about making all the world know what they just accomplished.
#13175
So, does that rather means that this is me who is getting too old? :D
#13176
I know that mentioning real people, as well as discussing something behind their backs could be impolite, if not rude, but there's something that bothered me.

As many of you may know, there were cases when certain people keep posting their games here, claiming that these are real games, which, in fact, were looking too terrible to believe they are serious. Some thought these people are stupid, others - that they are trolls. I felt quite annoyed too, not that I was angered, I was rather scared (!), because I couldn't stop thinking there's something in modern education that makes people behave so weird.
I remembered my own teenage years, I myself did a lot of silly and stupid things, but there was one difference - I rarely displayed my works in public, and I would be ashamed if I had to show something so unfinished and low quality... wait a second...

And then it hit me.
What if this is not stupidity or exaggerated self-confidence, but rather a natural behavior of a new generation? I mean, they are born in the era of Internet. What if they post such games here not because they truly believe they are superb, but because they are just used to show everything they do on Web, even things that older generation would dare to show only to closest friends?
Does this makes any sense?
#13177
Engine Development / Re: AGS engine iOS port
Tue 26/06/2012 22:31:11
Quote from: JJS on Sat 16/06/2012 15:08:59
It would mean that bigendian platforms will be actively maintained again, so this riddle would get solved. :=
Just FYI, I made an experiment and simply put Steve McCreas's "big end" read and write functions into use by disabling ALLEGRO_BIG_ENDIAN macro there. They seem to work nicely for Windows version (functions they use are actually std file routines, which are redefined for big-end case only).
I had to write my own implementations for little-endian getshort and putshort, however, but later I found they were already written in wgt2allg unit.
At the moment there are only few places where I cannot just plain "merge" Steve's code into default code, namely in compress.cpp and also in wfnfontrenderer implementation where you (or tobihan?) used psp_get_char function in little-endian version. I mean, it should certainly be possible, but I haven't tried yet.
Also in some cases there was big-end read/write functions prepared for a struct, but for some reason they weren't actually used; GameSetupStructBase struct for instance.

I guess CJ and Steve were couple of steps away from implementing endianess-independent code to the engine, but just did not finish this job.
#13178
Are you going to merge 32 and 64 bit code one day?
I checked your commit, it looks like most changes are related to default int size (you changed a lot of ints to long). Since that does not make a difference for 32-bit platform, same could be used in the main branch, am I correct?
There are other cases though, I wonder if they could be merged in one source with limited use of macros.
#13179
Lol, I possibly was thinking of rather beginner's problem :D sorry if I misunderstood what kind of advice you actually needed, Gabarts.
#13180
First, are all the other characters except players - guards?
You practically are checking through all the characters, and through all the characters for every character all the time. This makes (Character count * Character count) checks. Perhaps you could start inner loop with outer loop's index, like
Code: cpp
int j = i;


Are ALL of the characters in the same room? Perhaps you could check their rooms first.

Then, I am also curious what's in functions ROC_FUNC_Get_Distance_From().

Heh, nice, 3 comments at once :)

EDIT: dang, by comment on j = i does not make sense, since you check only alerted guards in outer loop. So ignore that.
SMF spam blocked by CleanTalk