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.


Messages - eri0o

Pages: [1] 2 3 ... 17
1
Editor Development / Re: Help file... here we go again.
« on: Yesterday at 21:56 »
Hey, just curious what you guys think.

new organisation, some links will lead nowhere for now though...

morganw is the one that fixed most things wrong on the conversion! :)

edit: people already alerted me some stuff:

- resolution, aspect ratio, full-screen/windowed are important definitions to have at the start of the project, so maybe adding something on FAQ and Tutorial and linking to a page with thorough definitions on this;
- Building for different platforms how to (Windows/Linux/MacOS/Android/...).
- this is more a recurring question on Discord : how to publish your game.
- how to install ags should be on the getting started. I see CW releases the versions on the forums, is the forum the place to link there to get latest stable of AGS? I was also thinking on adding a little bit of Wine on how to install for Linux/Mac people.

2
Engine Development / Re: AGS engine Android port
« on: 13 Jul 2018, 02:38 »
created an issue on the github tracker

I wasn't making sense of anything since I didn't know either there was a menu or the possibility of showing the keyboard. On my phone pressing the home button just goes to my Android Home, and back exits, so both buttons do exit the game. I haven't played a game that requires the keyboard, so I didn't noticed it.

I still don't understand why @mim2011 wasn't able to build the port, but I can't created an environment to try to reproduce.

Edit: Also, there is one thing being mixed here! Building the libags*.so /libpe.so files and building the App. I never did this in one step. The NDK is for compiling the AGS libs and the Android Studio makes Android app that can use libs - like the AGS Android App. I see the Android port and the Android App as two different things, because the last is for playing games made for pc on Android and the first for making actual Android games from an AGS game.

What I mean is that this modification can reuse already built libs since it's only the app and this should be easier.

3
Engine Development / Re: AGS engine Android port
« on: 12 Jul 2018, 23:42 »
I am lost in this thread. @mim2011, what exactly you did ? Which Android Studio? Which operating system? Which java file in which repository are you proposing the change?

What is showInGameMenu ? I am unfamiliar with this function.

I used very recent Android Studio and at the time I tested this on Ubuntu 16.04. I think CW did it on Windows 10 (guessing). On Android Studio just install any required tools. I just looked and I have SDK Platforms for Android 4.1, 6.0, 7.0 installed. SDK Tools 26.1.1, NDK 16.1.4479499 .

4
AGS Games in Production / Re: Private Detective
« on: 12 Jul 2018, 23:17 »
Loved the clock on the right for timing and the dead guy!

I am curious for the cutscenes! I want to try to play with someone by my side so we can discuss on the cases.

I have to say that I am very very interested to see how this game plays! It's three days for mid July :-D


5
AGS Games in Production / Re: Future Flashback
« on: 10 Jul 2018, 04:34 »
One more screenshot, art streaming and Future Flashback in a game event!

Whoa! Thanks HanaIndiana, Blondbraid, Privateer Puddin' and horusr We will try to keep up with more screenshots (look down in this post for one more! More to come reaaaally soon)! ;)
Cassiebsg, maybe it's the future 8-0! JSH, ToxicTuba, FireFlower, thank you, we will try to update here more!  Noted your observation too _InCreator_! :-D

- . - . -

Ricardo Juchem streamed his art for a background from Future Flashback here on Twitch!


Here it is in game!

- . - . -

Also, in a local event here in Brazil we took our game for people to play! It was very cool!


Read more on how it went on our blog...

- . - . -

We also created a game poster! Click on the image below to follow and download it from our blog!



6
Editor Development / Re: Help file... here we go again.
« on: 10 Jul 2018, 03:21 »
After tweeting github about broken Wiki on mobile, got an interesting suggestion. Adding a improve this page button that starts a pull.



The problem is the person editing has to have a Github account and understand how the fork pull request flow works.

7
Site & Forum Reports / Re: Bug reports
« on: 09 Jul 2018, 12:24 »
Hey CW, you nailed , I was using the same three hyphens without spaces :)

8
Editor Development / Re: Help file... here we go again.
« on: 08 Jul 2018, 00:26 »
Ok, first idea of topics listing

  • Getting Started in AGS
. Introduction on how to use Room Editor, Character Editor, Views and all, but very lean. This can be an updated version of the Tutorial we have.
  • General Settings and Default Setup
  • Room Editor (detailed)
  • Character Editor (detailed)
  • Inventory Items (detailed)
  • Sprites and Views.
  • Audio (and without scripting yet!)
  • Dialogs
  • GUI Editor
  • Mouse Cursor
  • Fonts
  • Translating a game
  • Dealing with Voice Over
  • Scripting (lots of other things can reference to here!!!)
  • Global Variables
  • Text Parser
  • Templates
  • Plugins
  • Bulding your game
  • Contributing to AGS Project
  • License stuff

9
Editor Development / Re: Help file... here we go again.
« on: 06 Jul 2018, 15:30 »
Oh, I was not talking as editing a single file, just having a possible visualization option at the end...

Ok, so there is a compile_documentation_unix.sh, but it only builds the tutorial. But I liked three lines...

Code: Bash
  1. sed -i 's/ILBRK/<br>/g' *.htm
  2. sed -i 's/GTSS/>/g' *.htm
  3. sed -i 's/LTSS/</g' *.htm

This is what is doable!

While I understand the md would be the new source, I am too lazy to generate by hand - it's over 22k lines!

Anyway, from the html files you upload to dropbox, I generated this!

My command was the naive bash+pandoc: find . -name \*.htm -type f -exec pandoc -o {}.md {} \;

Edit: Just noticed one has to place the images directory on there to be able to see images in a markdown previewer.
Edit2: All links are broken since they link to an htm instead of md file, but this can be replaced using sed.
Edit3:  find . -type f -iname "*.md" -exec sed -i 's/\.htm/\.htm.md/g' {} \;
Edit4:  very quick very bad conversion repo here.
Edit5: github wiki test. All links are broken except for the right side pane..
Edit6: Fixed links with :  find . -type f -iname "*.md" -exec sed -i 's/\.md//g' {} \;
Edit7: quick example of sphinx output for the markdown docs

10
Editor Development / Re: Help file... here we go again.
« on: 06 Jul 2018, 14:52 »
Which conversion? I haven't got to the part of using Sphinx yet... I am still at step 1!

Quote
1) First of all, let's create a new repository for the manual. That would be cleaner, and also easier to give access to various people without worrying they will break engine code by mistake.
2) Let's make several Markdown pages, only to test its abilities. Copy few manual topics, or some topics from Wiki. Then add pandoc/sphynx scripts as in eri0o's example, and try making html documentation and see how it looks and works.
3) If everything works good, decide on how to convert existing manual. We could automate and write scripts, or use one of the tools like pandoc (I recall finding some method to make such convertion before, need to review earlier posts in this thread). Of course, we'd have to fix style manually afterwards.
4) If all above works - move forward. We'd need to invent how the offline manual will work from now on. Could use some converter to create Windows Help file from the markdown/rst sources with sphynx, or even go Unity3D style and distribute html pages.

What I am thinking, is there a way to automate step 1 and 2 ? I don't know.

So I recently learned there is no Markdown specification, meaning one must be adopted...

Also, this is a better way to generate headers (atx headers are defined by # character preceding the header text instead of a line of ===== or ----- under the header text)
Code: Bash
  1. pandoc -f latex ags.tex --atx-headers --to=markdown -o ags.md

Now with this, I am thinking on how to split the single markdown in multiple files... I have to say that at the end, being able to ctrl+f through the manual is useful.

About batch converting the .htm files, you are talking about Manual/htmlfiles folder in the repo?

convert_htm_to_md.sh
Code: Bash
  1. #!/bin/bash
  2. find . -name \*.htm -type f -exec pandoc -o {}.md {} \;

These html files are a bunch of td/tr html tables, so the output is useless...

Oh right, about Sphinx. Why did I talked about it... It's the only thing I know that can generate the Windows help file. :(

11
Editor Development / Re: Help file... here we go again.
« on: 06 Jul 2018, 13:40 »
Ok, I have some ideas on this... First, a way to get the manual from the repo...

update_manual_files.sh
Add spoiler tag for Hidden:
Code: Bash
  1. #!/bin/bash
  2.  
  3. release_branch="release-3.4.1"
  4. function git_sparse_clone() (
  5.   rurl="$1" rbranch="$2" localdir="$3" && shift 3
  6.  
  7.   mkdir -p "$localdir"
  8.   cd "$localdir"
  9.  
  10.   git init
  11.   git remote add -f origin "$rurl"
  12.  
  13.   git config core.sparseCheckout true
  14.  
  15.   # Loops over remaining args
  16.   for i; do
  17.     echo "$i" >> .git/info/sparse-checkout
  18.   done
  19.  
  20.   git pull --depth=1 origin "$rbranch"
  21. )
  22.  
  23. git_sparse_clone "https://github.com/adventuregamestudio/ags.git" "$release_branch" "$release_branch" "Manual/*"
  24.  
  25. cd "$release_branch"/Manual/
  26.  

then the ags.tex has to be converted to Markdown. Pandoc can help there, but it will fail on lines 2845 ... 2851:

Code: LaTeX
  1. ...
  2. }\row{{ \verb$%d$ } & { Integer (use to display value of int and short variables) }
  3. }\row{{ \verb$%0Xd$ } & { Integer left-padded with up to X zeros }
  4. }\row{{ \verb$%s$ } & { String (use to display string variables) }
  5. }\row{{ \verb$%c$ } & { Character (displays the ASCII character of the supplied value) }
  6. }\row{{ \verb$%f$ } & { Float (displays a float variable) }
  7. }\row{{ \verb$%.Xf$ } & { Float to X decimal places }
  8. }\row{{ \verb$%%$ } & { Display the percent character (ie. no variable) }
  9. ...
  10.  

I can't deal with percent between a pair of money sign ($), so each percent on those lines has to be escaped.

Once that is done, you can convert.

pandoc -S ags.tex -o ags.md

Some things will break. These are some weird non latex marking used in the AGS documents: LTSSimg , GTSS, ILBRK. This will result in no image links. Once you get to the markdown part, though, that's where I stopped last time... here in this github repo... Note that since then, Sphinx has started to support Markdown, so the whole Md to Rst conversion can now be skipped.

Meanwhile, recently I have been back into using LaTeX through Overleaf, they recently acquired Sharelatex. The problem is the free account is very limited - only 60 files, the ags docs is comprised of 64 files in my best reduction...


12
I like your idea CW :)

It's exactly what I always wanted : "no spritecache.spr found, rebuilding cache from sources in game.agf...Done!". :D

13
I think the idea of building from separate sprites directly doesn't need to eliminate cache sprite file for doing things faster, it's just that you don't need to put the cache in source control, so that when loading a project without the cache file, it would be built the first time from sources. Imagine "reimport all sprites from source" if the cache.spr is not found.

14
It will be ready for my birthday :D

15
No. Like, if you want to go right, but you are facing a diagonally defined wall, like / , I would expect to go right and up. But without solving this, the character will just get stuck.

16
Which resolution you are working?

17
Is this the most update version of this module?

I've been thinking a lot about it since with joystick plugin this module essentially enables walking around in non point and click games. It just doesn't solve slopes well.

18
Ali went to pick cigarettes and never returned.

Edit: Ali idea is pretty good, on repeatedly execute always of the room, make a dummy invisible character be at same x & y of player character IF within the bounds, and do nothing if not (this will make the character not move in certain places). Use SmoothScroll's targetCharacter, and do targetCharacter=cDummy.

19
was anyone ever able to recreate leaves animating in low resolution games (320x240 // 320x180) through code in success?

I am looking for an effect similar to the one in Owlboy.

Add spoiler tag for Hidden:


I looked over the Underwater module, because it's the most similar I could remember, but I don't understand yet how to modify until a flailing effect can be made.

Add spoiler tag for Hidden:
LeavesAnimation.asc
Code: Adventure Game Studio
  1. // new module script
  2. #define MAX_FRAMES 10
  3.  
  4. #define MAX_BLOCKS 128
  5.  
  6.  
  7. int block_w;
  8. int block_h;
  9. int block_x[MAX_BLOCKS];
  10. int block_y[MAX_BLOCKS];
  11.  
  12. bool Leaves_enabled = false;
  13. int original_graphic;
  14.  
  15. float tt = 0.0;
  16. float t = 0.0;
  17. float a[MAX_FRAMES], b[MAX_FRAMES], c[MAX_FRAMES];
  18.  
  19. DynamicSprite * dyn_spr;
  20.  
  21. static void LeavesAnimation::SetBaseGaphic(int leavesGraphic){
  22.   if(dyn_spr!=null){
  23.     dyn_spr.Delete();  
  24.   }
  25.   original_graphic = leavesGraphic;
  26.   dyn_spr = DynamicSprite.CreateFromExistingSprite(original_graphic, true);
  27. }
  28.  
  29. static int LeavesAnimation::GetGaphic(){
  30.   if(dyn_spr!=null){
  31.     return dyn_spr.Graphic;  
  32.   }
  33.   return 0;
  34. }
  35.  
  36. static void LeavesAnimation::Enable() {
  37.   float scalar = 8000.0;
  38.   int i = 0;
  39.  
  40.   int delta1 = Random(MAX_FRAMES-1);
  41.   int delta2 = Random(MAX_FRAMES-1);
  42.   int delta3 = Random(MAX_FRAMES-1);
  43.  
  44.   while (i < MAX_FRAMES) {
  45.     a[i] = Maths.Cos(Maths.Pi*IntToFloat((delta1+i)%MAX_FRAMES)/IntToFloat(MAX_FRAMES));  //IntToFloat( Random(2000)*(Random(1)-1) )/scalar;
  46.     b[i] = Maths.Sin(Maths.Pi*IntToFloat((delta2+i)%MAX_FRAMES)/IntToFloat(MAX_FRAMES));  //IntToFloat( Random(2000)*(Random(1)-1) )/scalar;
  47.     c[i] = Maths.Cos(Maths.Pi*IntToFloat((delta3+i)%MAX_FRAMES)/IntToFloat(MAX_FRAMES));  //IntToFloat( Random(2000)*(Random(1)-1) )/scalar;
  48.     i++;
  49.   }
  50.  
  51.   block_w = Game.SpriteWidth[original_graphic]/48;
  52.   block_h = Game.SpriteHeight[original_graphic]/24;
  53.  
  54.   i = 0;
  55.   while (i < MAX_BLOCKS) {
  56.     block_x[i] = Random(Game.SpriteWidth[original_graphic]- 1 - block_w);
  57.     block_y[i] = Random(Game.SpriteHeight[original_graphic] - 1 - block_h);
  58.     i++;
  59.   }
  60.   Leaves_enabled = true;
  61. }
  62.  
  63. static void LeavesAnimation::Disable() {
  64.   Leaves_enabled = false;
  65. }
  66.  
  67. float get_gradient_x(int xi, int yi) {
  68.   float x = IntToFloat(xi)/160.0 - 1.0;
  69.   float y = IntToFloat(yi)/160.0 - 1.0;
  70.  
  71.   float dx = 0.0;
  72.  
  73.   int i = 0;
  74.   while (i < MAX_FRAMES) {
  75.     dx += a[i]*t*Maths.Cos(a[i]*t*x + b[i]*t*y + c[i]);
  76.     i++;
  77.   }
  78.   return dx;
  79. }
  80.  
  81. float get_gradient_y(int xi, int yi) {
  82.   float x = IntToFloat(xi)/160.0 - 1.0;
  83.   float y = IntToFloat(yi)/160.0 - 1.0;
  84.  
  85.   float dy = 0.0;
  86.  
  87.   int i = 0;
  88.   while (i < MAX_FRAMES) {
  89.     dy += b[i]*t*Maths.Cos(a[i]*t*x + b[i]*t*y + c[i]);
  90.     i++;
  91.   }
  92.   return dy;
  93. }
  94.  
  95. function offset_a_block(DrawingSurface *surf, int x, int y, int w, int h) {
  96.   int xoff = FloatToInt(1.0*get_gradient_x(x + w/2, y + w/2));
  97.   int yoff = FloatToInt(1.0*get_gradient_y(x + h/2, y + h/2));
  98.  
  99.   xoff = Utils.clampInt(xoff, 1, -1);
  100.   yoff = Utils.clampInt(yoff, 1, 0);
  101.  
  102.   //w = Utils.clampInt(w, Game.SpriteWidth[original_graphic]-x, 1);
  103.   //w = Utils.clampInt(w, Game.SpriteHeight[original_graphic]-y, 1);
  104.  
  105.   DynamicSprite *ds = DynamicSprite.CreateFromDrawingSurface(surf, x, y, w, h);
  106.   //surf.DrawingColor = COLOR_TRANSPARENT;
  107.   //surf.DrawRectangle(x, y, x+w, y+w);
  108.   surf.DrawImage(x - xoff, y - yoff, ds.Graphic);
  109. }
  110.  
  111. function repeatedly_execute_always() {
  112.   if (Leaves_enabled) {
  113.     if(dyn_spr==null){
  114.       return;
  115.     }
  116.    
  117.    if(getCurrentFrame()%4!=0){
  118.       return;  
  119.     }
  120.    
  121.     tt = tt + 0.01;
  122.     float k = Utils.clampFloat((2.0*Maths.Pi*Maths.Sin(tt)), 8.0, 0.0) ; ///8.0;
  123.  
  124.     t=1.0;
  125.  
  126.     if(dyn_spr!=null){
  127.       dyn_spr.Delete();  
  128.     }
  129.     dyn_spr = DynamicSprite.CreateFromExistingSprite(original_graphic, true);
  130.  
  131.     //SetBackgroundFrame(0);
  132.     // repeatedly grab a random chunk from bg 1 and paste it to bg 0, slightly offset
  133.     DrawingSurface *surf = dyn_spr.GetDrawingSurface();  //Room.GetDrawingSurfaceForBackground(0);
  134.  
  135.     int i = 0;
  136.     while (i < MAX_BLOCKS) {
  137.       if(Random(FloatToInt(k))==0){
  138.         block_x[i] = Random(Game.SpriteWidth[original_graphic]- 1 - block_w);
  139.         block_y[i] = Random(Game.SpriteHeight[original_graphic] - 1 - block_h);
  140.       }
  141.       //int x = Random(Game.SpriteWidth[original_graphic]- 1 - block_w);
  142.       //int y = Random(Game.SpriteHeight[original_graphic] - 1 - block_h);
  143.       offset_a_block(surf, block_x[i], block_y[i], block_w, block_h);
  144.       i++;
  145.     }
  146.  
  147.     surf.Release();
  148.   }
  149. }
  150.  
  151.  
  152.     // draw some more around the player
  153.     // ViewFrame *frame = Game.GetViewFrame(player.View, player.Loop, player.Frame);
  154.     // int graphic = frame.Graphic;
  155.     // int height = FloatToInt(IntToFloat(Game.SpriteHeight[graphic]*player.Scaling)/100.0);
  156.     // int width  = FloatToInt(IntToFloat( Game.SpriteWidth[graphic]*player.Scaling)/100.0);
  157.     // int left = player.x - width/2;
  158.     // int top = player.y - height - player.z;
  159.  
  160.     // i = 0;
  161.     // while (i < 32) {
  162.     //   i++;
  163.     //   int w = Room.Width/64;
  164.     //   int x = left - w/2 + Random(width - 1);
  165.     //   int y = top - w/2 + Random(height - 1);
  166.     //   if (x < 0) x = 0;
  167.     //   else if (x >= Room.Width - w) x = Room.Width - 1 - w;
  168.  
  169.     //   if (y < 0) y = 0;
  170.     //   else if (y >= Room.Height - w) y = Room.Height - 1 - w;  
  171.  
  172.     //   offset_a_block(surf, x, y, w);
  173.     // }
  174.  

LeavesAnimation.ash
Code: Adventure Game Studio
  1. // new module header
  2.  
  3. struct LeavesAnimation {
  4.  
  5. import static void Enable();
  6. import static void Disable();
  7. import static void SetBaseGaphic(int leavesGraphic);
  8. import static int GetGaphic();
  9.  
  10. };
  11.  

Here is a different gif idea (but I still can't understand how to implement leaf animation on the bg...)
Add spoiler tag for Hidden:


20
Code: Adventure Game Studio
  1.     else if (PxObj[objectpass].GetProperty("PxPos")==-7) {
  2.       PxObj[objectpass].X=PxObjOriginX[objectpass] + viewx; //Keep the object in the same place relative to the screen during scrolling.
  3.       PxObj[objectpass].Y=PxObjOriginY[objectpass] + viewy;
  4.       }
  5.  

Ok, looking through the code, if this is the code to keep the object in the same position, I expect the closer viewx and viewy are from zero, the more anchored is the object to the room bg itself, and so my previous understanding of the fraction was wrong.

Pages: [1] 2 3 ... 17