|
ItsyRealm: Alpha #2 |
Erin Maus
Member #7,537
July 2006
|
I fixed the issue with the reward chest in the mine. The short of it was I was transferring items and then trying to transfer them again which is a no-no. I'd rather the game crash than have duping bugs... ...but I have no idea how you got that error while eating. The call stack in the snippet you posted is in the probe system (e.g., when you left / right click on the game world). Are you able to replicate it, and if so, can you give instructions and/or a video? edit: ok I was able to replicate it, it's a race condition when unloading maps. The ground inventory is removed before the ground entity reference in the stage. I should be able to fix it quickly enough. edit 2: ok I fixed it. I'll do a test play though to find any bugs and then post an updated version. --- |
GullRaDriel
Member #3,861
September 2003
|
I'm going to continue my explorations today and keep you informed ^^ Edit: btw can you release a new binary pack ? I would love to finish and collect the chest ! "Code is like shit - it only smells if it is not yours" |
Erin Maus
Member #7,537
July 2006
|
Here's the latest update with all those fixes. I haven't thoroughly tested it so there may be more bugs. I also added a boomerang and three new melee weapons (dagger, mace, and longsworD). --- |
GullRaDriel
Member #3,861
September 2003
|
Crashed when trying to kill the evil three (previous version) I was eating items to keep me alive while the ghouls where around Error ItsyScape/Game/ItemBroker.lua:991: provider does not exist Traceback [C]: in function 'assert' Edit: updating to latest. I'm a big fan of that game :-D Nice work, I'm willing to help by submitting bugs ^^ "Code is like shit - it only smells if it is not yours" |
Erin Maus
Member #7,537
July 2006
|
Thank you, GullRaDriel! Let me know if there's anything in the game you especially like. Have you tried defeating the squid yet? That's one of my favorite parts. I released alpha #3! {"name":"9NQL5tS.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/7\/27c3a361a84fef3f208605e66be36a61.png","w":1280,"h":720,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/7\/27c3a361a84fef3f208605e66be36a61"} Improvements since alpha #2a:
Download it on the releases page: https://github.com/aaronbolyard/itsyscape/releases/tag/alpha-20181227 Enjoy! There's just the final tutorial dungeon left (plus a few features like a hint system and maybe minimaps). Whoop. --- |
GullRaDriel
Member #3,861
September 2003
|
I defeated the squid, the evil three, made me a full bronze armor, a lot of craft and mining. "Code is like shit - it only smells if it is not yours" |
Erin Maus
Member #7,537
July 2006
|
Yes, the tasks in the quest are repeatable. They give you items that are useful (high DPS, bad defense helmets) or other rewards (decent woodcutting/combat XP from the ancient driftwood; fish and other items and sailing XP from Mn'thrw encounter; and unfocused runes from the ghostly miner foreman). I have a few questions:
I think that's it! I'm going to add a hint system that explains all this in detail. ... am I a meme to you --- |
Edgar Reynaldo
Major Reynaldo
May 2007
|
A A Ron B Olyard said: am I a meme to you(?) Sorry, yes. I'm going to play this after New Year's, when KrampusHack is over. My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
Erin Maus
Member #7,537
July 2006
|
I created social media handles / accounts across all the major ones and oh my gosh is it a pain to keep them updated. Also I've been working on the High Chambers of Yendor (they mysteriously open up in the abandoned mines after you give Isabelle the artefacts, hmmm): {"name":"pErRq2M.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/c\/8\/c8eec03229d0adbd5ef343dd182b6741.png","w":640,"h":360,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/c\/8\/c8eec03229d0adbd5ef343dd182b6741"} {"name":"18ShAJ9.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/e\/3\/e341aaaa02ecbf85d3f57f143a94ff84.png","w":640,"h":360,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/e\/3\/e341aaaa02ecbf85d3f57f143a94ff84"} I also added lighting to the Abandoned Mine: {"name":"MFZ70ib.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/7\/b7ed50e753d76e7b490f1603f0ef901a.png","w":640,"h":360,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/7\/b7ed50e753d76e7b490f1603f0ef901a"} It looks a lot better... --- |
Arvidsson
Member #4,603
May 2004
|
Impressive stuff! I will try to test it someday. Keep it up!
|
Edgar Reynaldo
Major Reynaldo
May 2007
|
We'll play this as soon as I finish my Krampus hack. Besides you come out with new versions faster than I produce a demo! My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
Erin Maus
Member #7,537
July 2006
|
If it makes you feel better I haven't posted a release with the High Chambers of Yendor or anything yet. My next update will be in Feb/Mar when I release the demo. --- |
Edgar Reynaldo
Major Reynaldo
May 2007
|
Just a question what do you use for your Shadow casting technique? I'd like to add pervert X lighting to my 3D game but I'm not sure how to go about it. Let's try that again. I'd like to add per vertex lighting. That's better stupid phone. My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
Erin Maus
Member #7,537
July 2006
|
I have a hybrid deferred/forward rendering system. The lighting model is re-implemented (and slightly different) on the deferred and forward passes. This is my forward rendering shader: 1#line 1
2
3////////////////////////////////////////////////////////////////////////////////
4// Resource/Renderer/Forward/Base.frag.glsl
5//
6// This file is a part of ItsyScape.
7//
8// This Source Code Form is subject to the terms of the Mozilla Public
9// License, v. 2.0. If a copy of the MPL was not distributed with this
10// file, You can obtain one at http://mozilla.org/MPL/2.0/.
11///////////////////////////////////////////////////////////////////////////////
12//
13// Based on code from Tom Dalling:
14// https://www.tomdalling.com/blog/modern-opengl/08-even-more-lighting-directional-lights-spotlights-multiple-lights/
15//
16///////////////////////////////////////////////////////////////////////////////
17
18#define SCAPE_MAX_LIGHTS 16
19
20varying vec3 frag_Position;
21varying vec3 frag_Normal;
22varying vec2 frag_Texture;
23
24uniform int scape_NumLights;
25
26uniform struct Light {
27 vec4 position;
28 vec3 color;
29 float attenuation;
30 float ambientCoefficient;
31 float coneAngle;
32 vec3 coneDirection;
33} scape_Lights[SCAPE_MAX_LIGHTS];
34
35vec3 scapeApplyLight(
36 Light light,
37 vec3 position,
38 vec3 normal,
39 vec3 color)
40{
41 vec3 direction;
42 float attenuation = 1.0;
43 if (light.position.w == 0.0)
44 {
45 direction = normalize(light.position.xyz);
46 attenuation = 1.0;
47 }
48 else
49 {
50 vec3 lightSurfaceDifference = light.position.xyz - position;
51 direction = normalize(lightSurfaceDifference);
52 float lightSurfaceDistance = length(lightSurfaceDifference);
53 attenuation = light.attenuation / lightSurfaceDistance;
54
55 float dot = dot(-direction, normalize(light.coneDirection));
56 float lightToSurfaceAngle = degrees(acos(dot));
57 if (lightToSurfaceAngle > light.coneAngle)
58 {
59 attenuation = 0.0;
60 }
61 }
62
63 vec3 ambient = light.ambientCoefficient * color * light.color;
64 float diffuseCoefficient = max(0.0, dot(normal, direction));
65 vec3 diffuse = diffuseCoefficient * color * light.color;
66
67 return attenuation * diffuse + ambient;
68}
69
70vec4 performEffect(vec4 color, vec2 textureCoordinate);
71
72vec4 effect(
73 vec4 color,
74 Image texture,
75 vec2 textureCoordinate,
76 vec2 screenCoordinate)
77{
78 vec4 diffuse = performEffect(color, frag_Texture);
79 float alpha = diffuse.a * color.a;
80
81 if (alpha < 0.1)
82 {
83 discard;
84 }
85
86 vec3 result = vec3(0.0);
87 for (int i = 0; i < scape_NumLights; ++i)
88 {
89 result += scapeApplyLight(
90 scape_Lights[i],
91 frag_Position,
92 frag_Normal,
93 diffuse.rgb);
94 }
95
96 return vec4(result.rgb, diffuse.a * color.a);
97}
(Forward rendering is unaffected by fog.) Fog is used (sometimes heavily) in certain areas and is implemented in the deferred pass: 1#line 1
2
3////////////////////////////////////////////////////////////////////////////////
4// Resource/Renderer/Deferred/Fog.frag.glsl
5//
6// This file is a part of ItsyScape.
7//
8// This Source Code Form is subject to the terms of the Mozilla Public
9// License, v. 2.0. If a copy of the MPL was not distributed with this
10// file, You can obtain one at http://mozilla.org/MPL/2.0/.
11///////////////////////////////////////////////////////////////////////////////
12
13uniform Image scape_PositionTexture;
14
15uniform vec2 scape_FogParameters;
16uniform vec3 scape_FogColor;
17uniform vec3 scape_CameraEye;
18
19vec4 effect(
20 vec4 color,
21 Image texture,
22 vec2 textureCoordinate,
23 vec2 screenCoordinate)
24{
25 vec3 position = Texel(scape_PositionTexture, textureCoordinate).xyz - scape_CameraEye;
26 float length = length(position);
27 float factor = 1.0 - clamp((scape_FogParameters.y - length) / (scape_FogParameters.y - scape_FogParameters.x), 0.0, 1.0);
28
29 return vec4(scape_FogColor * factor, factor);
30}
I walk the scene graph and collect the lights into buckets (point light, directional light, etc), then either render the lights (if deferred) or pass the parameters when drawing the nodes (if forward). The lights in deferred are full screen effects, if necessary I'll optimize it in the future. For example, here is a point light shader: 1#line 1
2
3////////////////////////////////////////////////////////////////////////////////
4// Resource/Renderer/Deferred/DirectionalLight.frag.glsl
5//
6// This file is a part of ItsyScape.
7//
8// This Source Code Form is subject to the terms of the Mozilla Public
9// License, v. 2.0. If a copy of the MPL was not distributed with this
10// file, You can obtain one at http://mozilla.org/MPL/2.0/.
11///////////////////////////////////////////////////////////////////////////////
12
13uniform Image scape_PositionTexture;
14
15uniform float scape_LightAttenuation;
16uniform vec3 scape_LightPosition;
17uniform vec3 scape_LightColor;
18
19vec4 effect(
20 vec4 color,
21 Image texture,
22 vec2 textureCoordinate,
23 vec2 screenCoordinate)
24{
25 vec3 position = Texel(scape_PositionTexture, textureCoordinate).xyz;
26
27 vec3 lightSurfaceDifference = scape_LightPosition - position;
28 float attenuation = clamp(1.0 - length(lightSurfaceDifference) / scape_LightAttenuation, 0.0, 1.0);
29
30 vec3 result = attenuation * attenuation * scape_LightColor;
31 return vec4(result, 1.0);
32}
I take the world-position from the 'scape_PositionTexture' texture and perform the lighting calculation on it that way. The only difference between vertex and per-pixel lighting is you do the calculation in the vertex stage (and thus the result is interpolated across the triangle, resulting in a retro look). I don't think that would work well with deferred lighting (like used in my game). --- |
Erin Maus
Member #7,537
July 2006
|
Lighting is just calculating the direction of a light relative to a surface to determine how light or dark it is, in the end it's just dot products and so on. If you want something a bit less verbose than code I suggest https://learnopengl.com/Lighting/Basic-Lighting Lighting is a very complex topic and my implementation is way overkill for my game. --- |
Erin Maus
Member #7,537
July 2006
|
I fixed two major bugs. There was a performance bug where opening/closing interfaces never removed the interface controller from the update list, resulting in 1. a memory leak 2. eroding performance as more interfaces were opened/closed. This was discovered when I kept opening/closing the rewards interface and the FPS kept going down. This resulted in a GC/memory bug surfacing, which required me to properly use weak tables/weak_ptr to ensure scene nodes were deallocated properly. This also fixes a memory leak. I'm going to post a new release when I add an entrance to the High Chambers of Yendor. Currently you need to teleport there using the Amulet of Yendor, which ... means you need to steal the amulet from Isabelle using debug mode. Not ideal. ... {"name":"jKInwme.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/f\/ff4a36fcb9de3016f17e7a8a927b6f2b.gif","w":388,"h":315,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/f\/ff4a36fcb9de3016f17e7a8a927b6f2b"} Done like dinner. Will package up a release later. There's just one more bug I gotta fix at some point: sometimes an inventory isn't added to the item broker before it's accessed (probably some out-of-order initialization bug) so the game crashes between loading areas. Whoops. It's a very rare crash though, which makes it harder to diagnose. --- |
GullRaDriel
Member #3,861
September 2003
|
Aaron, I'm interested in 3 things: "Code is like shit - it only smells if it is not yours" |
Erin Maus
Member #7,537
July 2006
|
1. I compile my modified version of LOVE using the Android build script and add BMASHINA, Discworld, and nbunny as dependencies. Then I build the APK and install on my device. It's pretty unplayable since you can't right click or move the camera, though. 2. Yes, that is the plan. I'm not sure how, I haven't developed for iOS before. 3. Here you go . If you've given Isabelle all the items she requested, and then talked to her for your reward, you can access the High Chambers of Yendor by lighting the torches near Skeleton Miner Joe. Be prepared... Lots of food is a good idea, and bring two combat styles (ranged + something else is best). The rest is for you to figure out! It's probably very buggy I did minimal Q/A on the earlier areas. ... Ooh prayers: {"name":"611859","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/b\/8b913b571d7ceaa974e58f865ca0adab.png","w":1280,"h":720,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/b\/8b913b571d7ceaa974e58f865ca0adab"} Also spells show the requirements now if you hover: {"name":"611860","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/c\/bc4c0a9c380d8cb15f5fd2589f8fa6e5.png","w":305,"h":251,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/c\/bc4c0a9c380d8cb15f5fd2589f8fa6e5"} (That's a placeholder description used if one is missing. I haven't written any for spells.) --- |
Dizzy Egg
Member #10,824
March 2009
|
Ahh man, I need the j0rb pressure to ease off so I can get Itsy again! Probably another week, then I'll get stuck in....looks awesome!
---------------------------------------------------- |
Erin Maus
Member #7,537
July 2006
|
I added the Nominomicon. Currently it only shows your quest progress but will be expanded in the future. {"name":"611868","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/2\/d23164342329fa1bb11c9c65a76e478b.png","w":1280,"h":720,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/2\/d23164342329fa1bb11c9c65a76e478b"} You can download the latest version with the Nominomicon and various other fixes/improvements here: https://github.com/aaronbolyard/itsyscape/releases/tag/alpha-20190125 ... Haven't had much time (been doing a bit of work for others) but I managed to add some QOL updates: {"name":"J3cmAhH.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/d\/dd0fa7fab59129d99e560c006b37358b.gif","w":480,"h":320,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/d\/dd0fa7fab59129d99e560c006b37358b"} Tool tips & combat levels. Mn'thrw is level 106 for comparison. That's why you gotta use the cannons. ... I did some numbers for fun since you can see combat levels now. Yendor will have level 500 stats across the board + 40,000 health which puts his combat level at a little over 20,000. If you killed Yendor dealing 100% of the damage yourself, you'd get around 80,000,000 combat XP. Level 99 (the max) is 14,000,000 XP... The Empty King is worse, they'll have level 1000 stats across the board + infinite health. I'll probably make an exception and have their combat level '∞'. --- |
GullRaDriel
Member #3,861
September 2003
|
Super nice improvements, I'll be sure to play with them :-) "Code is like shit - it only smells if it is not yours" |
Erin Maus
Member #7,537
July 2006
|
I've been working on a website, I'm hoping to get it up and running this week. It looks pretty nice. There's the website which is literally just two pages; the admin page which allows me to manage screenshots & downloads; and the API which will enable developing a launcher. I think it looks pretty good: {"name":"I56eFCq.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/e\/8e2b6d509bf67108283b355d7c935b99.png","w":800,"h":522,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/e\/8e2b6d509bf67108283b355d7c935b99"} (Technical details: Build using Python/Flask. Admin side is a basic bootstrap site [because I'm literally going to be the only use using it ].) And so now I'm working on adding a launcher. (Small lie: working on analytics then launcher). The launcher will download the latest version of the game (if necessary) and then launch it. It's going to be a simple C#/WinForms app so it shouldn't be too hard to port to Linux / macOS using Mono. I've had a few hundred downloads and only a handful of comments. Since I'd like to try and approach publishers in the future, I need data on play time, retention, etc when I launch the demo. There will be an opt-out mechanism (just run ItsyRealm.exe with /f:anonymous at the command line; it's a one-off permanent request so long as you don't uninstall the game). I'm also adding a title screen and save select. This means multiple save files . Unfortunately I'm going to need a code signing cert which runs upwards of $400 when I launch the demo so I don't have to deal with SmartScreen (that 'feature' is just a racket of Microsoft pushing the UWP/Windows Store platform, assholes) and have potential players freak out. But that's still about two months away... It sucks, I want to be working on finishing the content but these little-big things need done at some point and I'd rather get them out of the way. tl;dr: website, launcher, analytics incoming over the next couple weeks. As far as content, title screen & save select. edit: Wee title screen. {"name":"611900","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/f\/dfba3d2e5480d224f5f3a8d41aa9f7fa.png","w":1280,"h":720,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/f\/dfba3d2e5480d224f5f3a8d41aa9f7fa"} edit: Wee player select. {"name":"611901","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/e\/e\/eea6cec83b9780ee4b9ca690efc33fd9.png","w":1280,"h":720,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/e\/e\/eea6cec83b9780ee4b9ca690efc33fd9"} Time to make the launcher and boom, new release! Well, when I deploy the website, first, of course... --- |
GullRaDriel
Member #3,861
September 2003
|
Wow, your work rhythm didn't drop, what a good job ! With all that I can't wait, I should be able to play during the week end :-D "Code is like shit - it only smells if it is not yours" |
|
|