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 - Calin Leafshade

Pages: [1] 2 3 ... 176
General Discussion / Re: Where`s m0ds?
« on: 10 Oct 2018, 17:18 »
m0ds, I'm disappointed.

This is pure cookie-cutter stuff.

"I didn't get my deserved fame and glory because the evil SJWs took it away from me with their professional victim hood."

This is like bigotry fuel 101.

Dude, you *scammed* this community out of a couple of grand to make a game *years ago* that you didn't. How can you possibly expect to have any good will left?
And you expect people to believe that the charity money "took a little time" to get there. How long does it take to write a cheque my good fellow?

You're grasping at straws, pal.

Modules & Plugins / Re: Tumbleweed Verbs (Beta!)
« on: 30 Apr 2017, 19:20 »
Forgive my ignorance but what is the "Thimbleweed mode"?

It looks the same to me.

The money issue has kinda already been answered.

Dave Gilbert tried to pay several people to work on AGS, including myself. All refused.
CW himself said that he doesn't want money.

I mean, show me *anyone* who would work on AGS for a reasonable sum who has the skills to do so.

We could start an indiegogo and then never deliver a product, eh m0ds?

The point is that you couldn't pay me enough money to put up with supporting that code base.
It has to be a labour of love or you just won't get the commitment you need.

Professional programmers just don't go into open source projects to get rich.. there are better ways of doing that.

Well I mean, to be clear, none of my work is dependent on AGS in any way. It's an entirely new engine that borrows some of AGSs concepts because they are good.

This is really how software gets developed. I try something with a unique perspective, so does Tzachs, so does scotch and then the best one "wins" so to speak. My "no-editor" approach is faster and easier for power users but less friendly for newbies and that's ok. The people who don't want the complexities of an editor can use Adore and the people who think the editor provides a good point of reference can use Tzachs'.

I'm certainly not forking AGS in any sense and AGS developed games would not work in Adore.

If we're sharing adventure game engines:

Adore is at a stage now where it is "usable" with caveats.

It's not a direct reimplmentation of AGS like Scotch's but it shares lots of similarity with the AGS design.

- Lua based scripting
- No IDE, all edited with text files and folder structures which, instinctively, seems faster than using AGS
- Build script based so I provide things like raw Photoshop files and a script extracts hotspots and stuff from it. Why reinvent the bitmap editor when better tools exist?
- Live reload of assets by pressing a key. One of AGS's bottlenecks is the slow compile speed and getting back into the game to test. In adore you can just press F9 and it reloads all the animations, rooms, script code and so on while keeping the game state ocnstant
- Resolution independent rendering. This allows you to render all your "game" stuff at the game res but UI/text at native resolution. This is becoming more acceptable as low res becomes as aesthetic choice rather than a limitation (like The Last Door)
- Two parallel threads similar to AGS's rendering/scripting dichotomy. Mine uses Lua coroutines to accomplish it.
- Animations are spritesheet based with some configuration. I rarely found that I reused sprites in lots of different views so it seemed like a complication.
- Pixel shader support with some effects built in (Black and white, bloom, saturation boost etc)

Some code to show how coding generally looks in Adore:

Code: Lua
  1. -- A room
  2. local room = adore.scenes.new("maintenance")
  3. room.ambientLight = {110,110,130}
  4. room.bloom = true
  5. room.scaling = {0.45,0.6}
  7. function room:afterFadeIn() -- Room events
  9.         aKass:say("I'm in! Man this place reeks of smoke. Someone's been taking breaks in here.")
  10.         aRepro:infolink("This room's not supposed to be in use, Kass. Be careful.")
  11.         aKass:say("When am I not?")
  12.         aRepro:infolink("Well...")
  13.         aKass:walk(1496, 930, true):face("right")
  14.         aKass:say("Damn it. The door's locked.")
  15.         aRepro:infolink("Turn back now! The virus will keep.")
  16.         aKass:say("No, I said I'd do it today, I even brought this sweet card reader.")
  17.         aRepro:infolink("That's not going to help you in here, is it? You were gonna steal a pass from someone in the lobby. Turn back.")
  18.         aKass:say("No, if I wuss out I'll never impress anyone. If you're not going to help, stop blabbering so I can max my bandwidth. I'm sure there's something in here I can use.")
  20. end
  22. room.hAccessPanel = room:newHotspot({ -- Room hotspots
  23.         name = "Access Panel",
  24.         clickable = true,
  25.         interact = function()
  26.                 if not room.openPanel.visible then
  27.                         aKass:walk(1670, 940, true):face("right")
  28.                         adore.wait(20)
  29.                         room.openPanel.visible = true
  30.                         aKass:say("Just pops right off!")
  31.                 else
  32.                         aKass:face("right")
  33.                         aKass:say("The security circuitry for the door. I need to overload it somehow.")
  34.                 end
  35.         end,
  36.         useInv = {
  37.                 cigfoil = function() -- When the "cigfoil" inventory item is used on the hotspot
  38.                         if not room.openPanel.visible then
  39.                                 aKass:say("I need to take the casing off first.")
  40.                         else
  41.                                 aKass:walk(1670, 940, true):face("right")
  42.                                 aKass:say("I should be able to override the door's security circuitry by connecting these two terminals. Thankfully this little bit of foil should work...")
  43.                                 Latency.activeInventory = nil -- Custom inventory implementation
  44.                                 aKass.inventory:removeItem(iCigFoil)
  45.                                 TODO("Animation of kass shorting the panel")
  46.                                 TODO("Sound indicating door has unlocked")
  47.                                 room.hDoor.unlocked = true -- Custom local state
  48.                                 aKass:say("...and there we go!")
  49.                         end
  50.                 end
  51.         },
  52.         wiki = { -- Custom data for a hotspot
  53.                 source = "Free//Net Security News",
  54.                 text = "After getting locked in the university copy room with his co-worker Dr John Foster, Dr Kevin Schriebmen (UCL) demonstrated it was possible to bypass the S37 electronic lock by bridging two connections in the security panel."
  55.         }
  56. })

Code: Lua
  1. --A module script
  3. adore.event("on_mouse_press", function(x,y,b) -- Event based
  4.                 local scene = adore.scenes.getCurrent()
  5.                 local sx,sy = adore.camera.toRoom(x,y) -- Dynamic camera rather than viewport, can be rotated, zoomed, translated
  6.                 if scene:onClick(sx,sy,b) then -- Allows a scene to "catch" a click
  7.                         return
  8.                 end
  9.                 local hit = scene:query(sx,sy) -- Query a scene at a location to get all the stuff there
  10.                 if b == "l" then
  11.                         if Latency.activeInventory then
  12.                                 if hit and hit.clickable then
  13.                                         if hit.useInv then
  14.                                                 local fn = hit.useInv[Latency.activeInventory.uniqueName]
  15.                                                 if type(fn) == "function" then
  16.                                                         fn(hit, Latency.activeInventory)
  17.                                                 elseif type(fn) == "table" then
  18.                                                         for i,v in ipairs(fn) do
  19.                                                                 aKass:say(v)
  20.                                                         end
  21.                                                 elseif fn then
  22.                                                         aKass:say(fn)
  23.                                                 else
  24.                                                         aKass:faceMouse()
  25.                                                         aKass:say("That won't work")
  26.                                                         Latency.activeInventory = nil
  27.                                                 end
  28.                                         end
  29.                                 end
  30.                         elseif not hit then
  31.                                 aKass:walk(sx,sy)
  32.                         elseif hit.clickable then
  33.                                 sayOrDo(hit, "interact")
  34.                         end
  35.                 elseif b == "r" then
  36.                         if Latency.activeInventory then
  37.                                 Latency.activeInventory = nil
  38.                         elseif hit then
  39.                                 Latency.wiki.show(hit,x,y) -- Custom functionality
  40.                         end
  41.                 end
  42.         end)

I know I haven't been around for a while but the main reason I come back to AGS every so often is simply the speed I can get results.

Adventure Creator has the same problems every other unity frankenstein has: butchered concepts to fit a use case.
Scripting in adventure game engines is always hard because you essentially have two threads of execution, the game logic and the engine logic.
AGS's solution to this is just so damn easy to work with.

You want that in Love2D? you need coroutines.
Want that in Unity? Coroutines or threads.

In AGS you just chain your commands and you're golden. If you want some concurrency you can use rep_ex_always. It's just so fucking easy.

There are people who have made good games with AGS who don't know their arse from their elbow when it comes to programming and there is just no other engine in which that is possible.

The strength of AGS doesn't lie in its antique codebase, it lies in the fundamental design choices.

What you need is AGS4. (4GS?)

Completed Game Announcements / Re: Him - #AdvJam2016
« on: 02 Jun 2016, 15:55 »
you tried to "pick up" a cloth? I don't even understand what that would entail.

What absurd nonsense.

The snow is a fullscreen animation made in after effects. It's only really possible at low resolutions because of AGS's restrictive sprite cache.

Adventure Related Talk & Chat / Re: AGS Awards 2015: SOON
« on: 26 May 2016, 14:46 »
It's nearly June, guys.

Completed Game Announcements / Re: Him - #AdvJam2016
« on: 26 May 2016, 13:04 »
The game was something of a test of the format, yea. I'm surprised at how well it's done considering how niche it is (even for adventure games).

So yea, expect something else in this format with a bit more meat.

Completed Game Announcements / Re: Him - #AdvJam2016
« on: 23 May 2016, 13:45 »
The game is part of Adventure Jam so rating the game and voting for it is very much appreciated if you enjoyed it!


General Discussion / Re: Alternative Knowledge
« on: 21 May 2016, 14:47 »
Anything is toxic in high doses. That's why we call them "high doses".

Completed Game Announcements / Re: Him - #AdvJam2016
« on: 21 May 2016, 12:55 »
Can you provide a mirror, please? :)

Added a direct download mirror : http://users.sanctuary-interactive.com/~steve/Him-v1.1.zip

Do you plan on expanding it at all - the UI has lots of possible interactions but I don't think I used some of them. Such as 'strike'! Maybe I missed some secrets?

Probably won't expand this particular story since it's kinda done but we do plan to use this UI for further stories that aren't built under such tight time constraints

Completed Game Announcements / Him - #AdvJam2016
« on: 21 May 2016, 01:32 »
Him - A Horror Adventure

A good old fashioned haunted house story.

Made by:
Calin Leafshade (@CalinLeafshade) - Words and code
Sookie Sock (@SookieSock) - Graphics


Editor Development / Re: AGS - Almost Beta
« on: 13 May 2016, 00:17 »
You need to find the acwin.exe file, right click, properties, unblock.

General Discussion / Re: Alternative Knowledge
« on: 07 Mar 2016, 10:19 »

Calin Leafshade's spritefont renderer is something I am also looking into, but it doesn't appear to be able to render fonts to a GUI.


HTC phones have been my favourite for about a decade now. The HTC One is a beautiful phone.

Modules & Plugins / Re: MODULE: Easy mirrors 2.0
« on: 02 Jan 2016, 16:39 »
It's trying to set a label for debugging. Presumably the module author left it in by mistake.

Just remove that line.

Pages: [1] 2 3 ... 176