« first day (2681 days earlier)      last day (136 days later) » 

1:21 AM
@GabrieleVierti Maybe? I've never played the game nor watched the tv show.
 
I liked the games when I was a kid. Very accessible turn-based RPG. The story was always a bit thin, so a lot of fun was just in the game mechanics and collectability.
 
2:15 AM
Yeah, I don't know to what extent kids can follow a complex story.
 
3:03 AM
I often beat games only to get to the end of the story. At some point I get fed up with the gameplay and only want to know how it ends.
 
I might actually need to use a uint128_t for my GUI sort index value. I'm using some "wasteful" order-index allocation to reduce resorting when objects are added/removed.
I probably wont need it for a game GUI but an application GUI could bust 64 bits if every level takes 1 or 2 bits out each...
Maybe I'll have to use a linear assignment and flag some GUI tree levels as "spammy" to reserve space and limit rebuilding the whole render list.
 
3:19 AM
why does every level take 1 or 2 bits out each?
 
{0:self-bg, 1:children} or {0:self-bg, 1:children, 2:self-overlay}
And all the children indices start below the parent's allocated bits.
That way if a child element changes it only affect its own range and doesn't bump other objects.
 
3:38 AM
A level without any graphics takes 0 bits.
 
3:58 AM
So I just found a bug where it was over-allocating bits, fixed it. I might be just fine in terms of bits. My unit test went from 53bits available to 62bits available.
 
@StephaneHockenhull woo knuckles for bug fix!
Just caught a bug where I was discarding a bunch of points from bezier curves
couldn't tell until I zoomed in a bit; lines were still connected & at a distance, it looked okay-ish
 
off by one?
 
more like off-by-half I kept the entire last part of the curve, & the first pt, but between the first pt & middle, single line segment city
 
it was close enough that I didn't really notice in that test case
then I added another unit test & got this ugly donut
@st
[nice work there pikalek, try typing]
@StephaneHockenhull do you use a framework for your unit tests or something home made?
 
4:11 AM
it's not an automated unit-test
 
by choice or situational necessity?
 
It's just a bunch of UI functionality test. Not really something I can automate. Or at least, something that would be worth automating.
It's still a work in progress. So I'd have to rewrite the automation more often than the code itself :P
 
fair enough
anyway, props to us for testing & props again for fix bugs
 
we're like the future programming or something terribly inspirational like
nope to late - don't make a face, I've already decided we're rad
 
 
1 hour later…
5:44 AM
I'm having extended discussions resurface repeatedly on one of my recent answers... How do I call someone to the chat room (already created by moderator on previous extended discussions)?
(PS: I am experienced with the Q&A portions of the StackExchange network sites, but I'm an introvert who very rarely visits chat without necessity)
 
6:47 AM
in theory you just @XenoRo them but if they haven't ever been in chat I don't think it works?
otherwise you get a mod to clean up the comment thread again (gamedev.stackexchange.com/questions/151732/… for any passing mods)
@XenoRo or you find their chat profile page and there's a [Invite user to room] button chat.stackexchange.com/users/146549/jibb-smart
 
7:18 AM
@XenoRo the only thing you can do is mention again, and again, for people to join the specific chatroom in the comments...
 
I flagged one of the comments for a mod
 
 
4 hours later…
11:53 AM
so, the folks of you that do not use Unity or any other superduper engine: how do you render text? And can you render box-drawing characters?
 
SDL
I'm not sure what sort of characters SDL_TTF supports in general
 
0
Q: Should I add notes to my question afterwards?

Solar GranulationI recently asked a question and have accepted an answer, but comments on both the question and answers have shown that my question could've been clearer. I think that I could add notes that would address this and show why I picked the answer that I did, not least because off what I've learnt (e...

 
@Tyyppi_77 would you mind trying to render this?: ┐└┴┬├─┼ãÃ╚╔╩╦╠═╬
I'm using STB myself and I'm terrible..
 
does that depend on a font?
is there a specific font that you're trying to use?
sorry I'm having some trouble getting C++ to accept the literal
 
no bother
Most fonts have these characters implemented. They are called box-drawing-characters, from the infamous Codepage 437; in Unicode they are located at 0x2550 and following.
I'm currently on a mission to A) find out where they work and where not, and B) getting them with STB
 
12:06 PM
aight looks like the font I use for GunHero doesn't have those characters, I'll try to load in a font that has
 
you're amazing
There's btw this amazing tool which can display all the characters a font offers, very handy
 
@dot_Sp0T since it's quite a lot to explain here i use this method: learnopengl.com/#!In-Practice/Text-Rendering
I pretty much never use this method, i generally use a gui like Dear Imgui, so that i can focus just on application i'm working on ;)
@Tyyppi_77 btw i've seen gunhero, it's pretty good :) !
 
thanks!
 
@GabrieleVierti yeah, I use STB_FreeType which is nice as well. From looking at the code you linked they work pretty similar. But for STB I get clean Java bindings which I somehow can't find for FreeType :)
 
Nice work
 
12:11 PM
aight my font constant is inside a header file in the content loader so recompiling takes a while
trying with a system font that should have box drawing
 
@dot_Sp0T oh i see :)
 
@Tyyppi_77 thanks man!! How long does it take you to compile if I may ask
 
too long :) like a minute or two I think when I change a often-used header file
Seems to work?
 
There is also another library for Cpp called FreeImage. I can't say much about it, i've never used it, but if you are interested there is also a java wrapper: forum.lwjgl.org/index.php?topic=2893.0
 
sweet, thanks!
 
12:15 PM
Not really sure if this helps you in any way though
 
@Tyyppi_77 nice!
 
It helps muchos, tells me that it must be easy as it works in other libs as well
 
oh, well then it's cool, glad I could help!
 
also tells me that the unicode characters should be able to be interpreted^^
time to write some code to export the whole texture and look at what actually gets packed
 
I've been meaning to add like a Finnish localization to GH just to learn about string/char stuff
 
12:18 PM
I def need to implement a sprite class or similar
@Tyyppi_77 great idea
 
yeah should be relatively simple if I don't do like arabics or something
 
it's all in the unicode
 
yeah but left-to-right stuff is just meh
(also I can just do the Finnish localization myself)
 
you just need to add a flag to your font-renderer to invert the whole thing
(I thought so)
 
12:35 PM
btw has anyone here played VA-11 Hall-A ?
 
It's my phone profiler. can anyone please tell me if the problem is in script or objects?
 
I don't see a problem at all
 
it says CPU 7.56
But when I run on laptop, it's 2.56
 
nwp
The problem is in line 42.
 
yes phones have worse CPUs
 
nwp
12:48 PM
Looks like your laptop is a bit faster than your phone. That is to be expected.
 
Yeah, but in the phone it start lagging in a few seconds.
line 42?
 
@Hemlata it's a joke based on the work of Douglas Adams
 
Ah lol
 
@Hemlata that's not what your profiling indicates though
 
Yeah.
Idk what's the problem is then
 
12:53 PM
If your game is running fine on the computer but not on your phone then it is very likely that your phone cannot keep up with the framerates you expect from it
This can be either due to the memory clogging up with stuff (e.g. a memory leak) or the CPU not being able to keep up
You have to determine the exact problem by profiling, running the game with a profiler/debugger turned on so you can watch memory and CPU consumption at certain points in time
 
@dot_Sp0T That's what she's done.
 
if e.g. the memory consumption steadily rises it is likely that you have a memory leak
@Tyyppi_77 yeah but the question is does she understand what she's looking at?
 
At least I can't spot anything unusual from the profiling result.
Can you?
 
yeah
 
in other news, I just completed my scala programming course!
 
12:56 PM
I will share profiling results again
In a minute
 
Wow, the latest Advent is tricky...
 
@Tyyppi_77 yuck scala
 
it's all right but I'm happy that I'm done with the coursework for now
 
no exams ahead of you?
 
The problem is CPU. This time it shows 290!
 
1:01 PM
do you have a fixed or a variable timestep?
 
now those look like useful results
 
@dot_Sp0T Um, idk that. How do you check those?
 
@Hemlata tbh no idea how unity does it. The concepts refer to your gameloop running either at a fixed step of n times per second or at a variable step (that often just runs as fast as it can). But your profiling seems useful so this doesn't really matter
It seems that your rendering is going mad
 
I am using fixedUpdate()
Yeah haha
But how do I fix it?
I don't know what the problem is with. My scripts or gameObjects?
 
1:08 PM
i don't know unity that well sorry. But in general you want to reduce the amount of things that are drawn. How you achieve this is up to your gamelogic, maybe you draw things where other stuff is then drawn ontop - in that case you would want to do some raytracing or similar to only draw whatever can be seen.
 
do you spawn new objects as the player moves forwards?
 
oh that is way better than what I could come up with, check the link!^^
 
Yes, it does spawn objects when player move forwards bc I am using culling, so it only render when the camera can see it
Yeah I will read that
 
how does culling spawn new objects?
 
Um, not new objects I think. But I have already placed the gameObjects, and like you said it only render when the camera sees it since I am using culling
 
1:13 PM
@Hemlata are you sure it is only rendering things you see, because the profiler says there are humongous amounts of triangles being rendered
 
Yeah I have so many cubes which render
Or maybe I should remove them and use something else I think
 
seems weird that it would render more objects as the player moves forward
 
if you have multiple cubes behind each other, do you still render them?
(assuming it is 3D)
 
I have them in the sides like side building but when I remove all of those buildings, it works fine in the phone
Yes
I have like one cube and on the top of it another cube and so on
and I have so many cubes like that
Like 500 or even more
Probably it's the reason it is causing the lagging
 
very likely
if they're just scenery and no actual game-objects you might consider instead using a big texture
 
1:20 PM
Big texture? like?
just one object made it like that the way I want instead of creating it using lots of cube?
 
E.g. when you look at the screen @Tyyppi_77 posted earlier, there's lots of trees there. These trees aren't individual trees but just an image (texture) projected onto a quad the size of the screen
 
How do you make texture?
 
not sure if a quad like that will work here though, very hard to say without seeing your game
 
You're using unity, right? I think this should be a texture tutorial
 
Yeah
I just want some side buildings in my game, so maybe quad like that will work.
 
1:25 PM
could you make a screenshot of your scene with the buildings as of now?
 
AFAIK she doesn't want to show the game
 
sure
 
oh really? cool!
 
Yeah but those are just buildings haha
And not that fancy
 
ah okay
 
1:26 PM
I do have other buildings but they are very fancy but the cube ones are not that good
 
if you're worried that images you upload in this chat will be used by others then you could e.g. use a page like github to upload screenshots and accompany the repository with a BSD license or something else that forces people to mention you at least
 
Nah, it's fine. They are stacked up cube so doesn't matter. If it was something else in my game I would probably not show
But still I would delete it once you guys see
Did you see it?
 
oh jeez
is this a sidescroller or a 3D thing?
 
why would you remove that?
what is there to steal?
 
It's 3d but the view I showed you is from side
 
1:32 PM
btw it's still uplaoded here, forever: i.stack.imgur.com/xzIl1.png
 
hmmm I can imagine that this sort of thing is very taxing for the renderer
 
Yeah
I will replace them with other buildings
 
especially if you add and remove these things constantly there is no optimization that can be done
 
Yeah
 
1:33 PM
you can do them e.g. in blender or a similar software in order to reduce the triangles needed for them.
 
Plus it doesn't look that good either, so I should change it with something which don't have so many objects
 
And then there's additional techniques so you don't have to calculate the meshes more than once per render
 
Yeah
 
I wonder if those can be batched or if unity batches those automatically
Seems like something that's really trivially batched
 
Yeah haha
I gotta have dinner though. Later and thanks :)
 
1:35 PM
laterz
 
c u
@Tyyppi_77 if you look at the profiler it seems to batch them
But I guess instancing (or whatsitcalled) wil still be a better sol
 
but I mean like why aren't those just a single draw call?
should be a feasible amount of vertices to batch
I'm currently doing some boring spreadsheet stuff for my production economy course
Can't figure this one answer out, I've already tried 12 times lol
 
12 times and don't get the right result?
 
yeah
each wrong answer accumulates penalties and now I'm at -1.40 points from a 1.0 point total
I'm curious to see if it'll clamp to 0 or go negative lol once I get this correct
 
very interesting
 
1:44 PM
luckily the exercise allows three total tries with new randomly generated numbers
so once I get this right, I can just retry, but change the input fields in my spreadsheet, and get full points
 
2:06 PM
aww it clamps
no negative scores :(
 
2:21 PM
just optimized my level generation from 1.8s to 0.061s
 
your school seems very interesting
 
how come?
 
spreadsheet homework for economy classes
 
seems like a standard thing to me, this is like supposed to be an introduction to running a business
so we're doing some light accounting stuff
 
 
1 hour later…
nwp
 
3:50 PM
What did you do?
 
nwp
It wasn't me, I swear!
It happened when accessing gamedev.stackexchange.com for like a minute or so. It's fixed now.
 
yeah sure
I think you did it on purpose
 
nwp
I'm a master Haxx0r! Fear me!
 
4:16 PM
I fear
 
4:45 PM
So are scale/rotation applied on the CPU to the vertices when doing sprite batch, or should I add additional vertex attributes for those and do that on the GPU?
 
Both work fine; the approach you'd want to take depends mainly on how you're already managing the batch, and whether you are CPU or GPU bound
If you're already updating every vertex in the batch every frame or so anyway, and your batches aren't huge, it's fine to just do it on the CPU.
It may be more scalable to do it in the GPU since you leave room on the CPU to do other stuff and that kind of bulk transform is pretty easy for the GPU to do; but at the same time you do have to consider that you're spending time and resources updating that constant buffer instead. shrug
 
Seems like I'm going to implement SDF font rendering....
 
I prefer to do it on the CPU because I prefer debugging things there.
 
Aight yeah I think CPU will work better for me since I do indeed rebuild the batch every frame and that debugging portion is definitely a plus!
Thanks!
 
Wait were you discussing about passing a matrix to the shader vs recalculating vertices on the cpu?
i mean it's 1 uniform, and you'll need to switch shaders anyway, so there's not much overhead
 
4:57 PM
Nonono, not 1 uniform
Since this is a sprite batch it's one matrix (if scale and rotation are combined) per vertex
 
Mar 3 '14 at 19:44, by Alex M.
SpriteBatch theSpriteBatch //your sprite batch
= new SpriteBatch(); //Initialize your sprite batch to a new object of type SpriteBatch
 
lol
 
I can't see "sprite batch" without thinking of this
 
@JoshPetrie hi Josh! :)
 
@Tyyppi_77 okay, I think we do spritebatching differently :D
 
5:10 PM
I assume you batch based on rotation and scale too then?
 
more or less
 
I currently just dump everything that shares a texture to the same batch, which is currently everything since I got a texture atlas to work
But I need to also compare shaders so that I can add cool custom effects on some specific entities
 
my batch has a reference to the shaderprogram it uses, and a list of textures & uniforms that it needs set, which it sets and unsets before and after batching; then multiple batches are executed in order so those using the same shaderprog are executed after another thus I don't need to unload/load a new shaderprog too often
As I don't have too much going on so far that works fine
I might make batches share a bigger structure/have a bigger class that organizes and manages its batches internally so I can spread the textures between all 48 or so texture_units I have available and need even less reloading
 
Aight so I've obviously broken depth sorting here
 
6:06 PM
Wow, today's Advent of Code seems to be more difficult then most...
Especially the second part.
The second part wasn't that hard really, I promise!
 
yup -- it was the first problem for which I didn't just recycle the code for the first part
but I had more trouble with the number spiral part one since I insisted on building the closed-form solution for the spiral coordinates
 
I had an idea of what the second part was going to be, and so I took the time to do the first part such that I could use it for the second part.
LOL, me too.
 
I still haven't managed to get me to do the 3rd one
 
keep at it -- it's the hardest problem so far
or i dunno, skip it and come back after you've done the others ;)
 
The one today was close, but...
Today's really wasn't hard, it was just a lot of work.
So not difficult, but hard?
 
6:16 PM
no, I should really continue on my renderer
 
No, you know you want to do Advent of Code;-)
 
also I don't see the third one as hard, more obnoxious than hard
You can see my progress on your leaderbord^^
 
It can be hard if you do it right.
 
do you have your solutions up anywhere?
 
I do.
But I'll share it after the 25th;-)
You could probably find it if you tried, however.
 
6:19 PM
never
 
Mine aren't too hard to find either. But it's probably easier to just solve the problems yourself than to read through my F# spaghetti solutions
 
you won't find mine though
 
My solution for the second part wasn't really a complete solution. It just did 99% of the work, using me to do the last bit.
airlri
airlri [152523, 152514, 152514, 152514, 152514, 152514] ['pidgnp', 'lljifba', 'gmewl', 'tbedct', 'ryvidhy', 'rdytzgp']
pidgnp [8094, 8094, 8094, 8103, 8094, 8094, 8094] ['ehlwoxs', 'hbldvzk', 'ezwzp', 'tylelk', 'jkxutle', 'kkflx', 'oucqw']
tylelk [1614, 1614, 1614, 1623, 1614] ['drfzng', 'yhonqw', 'wsyiyen', 'dqwocyn', 'qqnroz']
I could have spent another 2 minutes to code up the right answer, but...
 
oh :< that part actually took me the most code :P
 
I know how I could have done it after that bit, but...
The difference was fairly easy from this, 9.
 
6:29 PM
if you just want the balanced weights you can lazily evaluate it while building the structure out
 
The item that had the issue was a bit different.
I never really did build a structure.
Basically I set up 2 dictionaries, showing the children and the weights.
These were both parsed from the beginning.
I figured out the weight via a recursive function.
And printed out anything unbalanced.
 
alright! We're finally up on both Android and iOS!
http://mbranegame.com/
[M][M][M][M][M][M][M][M][M]
@Jimmy Word
 
@DukeZhou still no pc/web version is there?
 
6:48 PM
@DukeZhou the app isn't available in my country :(((
 
@dot_Sp0T We focused on mobile for the product b/c it's the only growth market in games for the forseeable future (Also, the breakthrough re: the mechanics came out of seeing how games can be expressed on tablet;)
but we're definitely open to collaborating with developers who want to produce PC and web versions! (We're a pure sweat-equity bootstrap)
@GabrieleVierti what country are you in?
 
@GabrieleVierti iOS or Android?
 
Android
 
It's probably because we don't have the localized translation on the game description. (Haven't had time to look deeply into that yet)
 
7:00 PM
Oh ok
I would like to try it... Ugh
 
@GabrieleVierti I could pst you the Android package directly. It's highly stable and <10MB. If interested, hit me up: dukezhou@mclassgames.com
no 3rd party code beyond LibGDX
 
@DukeZhou what about win10? could be distributed on pcs, tablets and the few phones still around (like mine)
 
if you really want to play it get the android package and run it in an emulator
 
@dot_Sp0T That sounds doable, especially as our developer is a Java-first guy, but he's got a lot on his plate with the mobile apps (we don't even have additional game modes/in-app purchases set up yet, and really need to get the game networked to build that online player community.)
That's said, the goal is to eventually have a version for all computing systems!
 
7:18 PM
I'm def looking forward to see you folks progres. No matter if it's more platforms or more game modes :)
 
@dot_Sp0T thanks for that. I coded the original prototype on iPad in a text editor in pure JS. Took me a couple of months b/c I was learning JS concurrently, but I'm guessing a pro developer could probably slap a PvP version together in under an hour, and attach some kind of ML function for PvAI.
We're avoiding Deep Learning for the game AI at present, as the emphasis is on both "dumb" and "smart" AIs that play like humans.
 
don't underestimate it. I always awe when hearing or seeing that someone is 'creating game xyz in 2 hours'. But once you realize that they just slap together code other people wrote then it's not that aweful anymore
 
@dot_Sp0T the game is extraordinarily compact, but I hear you. Creating stable, production applications for iOS and Android was a different animal entirely. Sometimes I got frustrated at how long it took (we're all working nights), but I've never regretted bringing on a trained programmer for that part of the process.
(Also, my dev is a pretty gifted designer in his own right, so his contribution to the project has gone over and above just the programming.)
of course, as Product Manager, I have to fill in all the skill gaps, which has me spending a ridiculous amount of time doing graphics for the game and marketing.
 
It sounds amazing
 
@DMGregory I wonder how many different ways people can ask how to handle variable frame rates in a game loop. There's plenty of questions and answers (found yours) but couldn't find one that would be a proper duplicate of that latest one. Mostly because they're all specific to the particular engine/libraries they're using :(
 
7:29 PM
@dot_Sp0T Thanks. I'm not claiming it's the greatest game of all-time, just top 3 for strategy games ;)
of course, that includes both abstract strategy and modern strategy...
 
@StephaneHockenhull Yeah. ^_^; That's OK though. Our duplicate-aggregating systems aren't an ironclad "no duplicates" law.
Having multiple flavours of a question that gets asked several different ways can act as a kind of SEO, making it easier for folks to find an entry point to the topic.
We don't really have good stats on "how many questions didn't get asked because users found their way to one of these similar questions first?"
 
Yeah. I'm a bit annoyed at the non-neat-ness of re-writing the same game loop principle in ~10 different APIs tho :D
WE NEED TWO FUNCTIONS, FOLKS!
GetTimeNow() and ThreadSleepUntil(X)
The rest is cut & paste.
It's been done since the late 80s.
Now get off my lawn!
 
More annoying would be the fact that people are unable to generalize..
 
@StephaneHockenhull lol
 
@StephaneHockenhull you don't want to see my loop(s)....
 
7:39 PM
@StephaneHockenhull One of the most valuable aspects of my corporate software career was interaction with the old-timers (although, back in the 90's, that meant the punch card generation;)
 
Game loops are hard
3
 
@StephaneHockenhull ahahahah lol
 
Well god damnit the star board's gonna soon be just a list of stuff I find hard
Talking to girls is hard
Waking up is sometimes hard
 
That's not true
Sorry
 
I avoid variable delta-time loops because it's too easy to make a mistake and cumulative rounding errors are a pain.
It's the same reason Unity has fixed time-step for some of the physics. Things get too numerically unstable.
 
7:46 PM
Life is hard.
 
for me it's not the instability, it's that things feel differently floaty or frictiony when dt is variable.
 
Having to calculate fractional powers for acceleration/deceleration to get the proper surface under the curve gets too messy too quickly... It's doable but unless it's a driving/flying simulator I don't think it's worth it
 
oh, I guess that's the same thing then
 
@PearsonArtPhoto isn't it? One of my godsons was asking we why his dad is such a loser, and I was like "life is hard, son!"
and not just NP hard!
 
@StephaneHockenhull do you also do the state interpolation bit
because that's the part that I never wind up implementing due to "takes too much work"
 
7:54 PM
@Jimmy I have a hybrid game-loop where most of the stuff runs as fixed-step and I only do delta-time processing for inconsequential parts like graphic particle updates. That lighten up the game update load on the CPU while keeping things simple enough. No state change issue.
If there are any glitches they're only cosmetic. Particles that interact with the game are still processed as fixed-step.
 
I guess if the effects are smooth it hides some of the aliasing from FPS/updatePS mismatch
 
8:20 PM
Yeah, you can get a perceptible judder that way (ie. with pure FixedUpdate and no interpolation or delta-time fixups on anything), that can make it look like your framerate is dropping even when your game is running solidly.
 
I just leave that job to G-Sync and FreeSync :D
alternatively drop the screen's refresh to 24Hz and problem "solved" :D
There's not really a way to win otherwise: You're still left with the issue of SLI micro-stutter and double / triple-buffering lag where the delta between displayed frames does not match the previous delta calculated so your frames are displayed with the wrong time delta.
And add the deferred rendering latency/jitter and the slight inaccuracies in the system timer... Going above 100fps often makes it look worst than sticking to 60 :(
Say the GPU can display a steady 100Hz, and the game loop has no problem matching this, but the OS delays your thread a bit, your frames are internally calculated as
+10ms, +12ms, +8ms, +10ms
But because the GPU and CPU is so fast (render in less than 5ms) they had time to catch up over that slight hiccup and they're actually still displayed as +10ms, +10ms, +10ms, +10ms without missing an actual frame.
So we effectively get a frame displayed 2ms too soon, followed by one 2ms too late.
make that 2nd one 4ms too late, (forgot to add the previous frame's error)
 
9:03 PM
.. my mind is blown
I 'd never thought about the double-buffering ruining your timing
 
 
1 hour later…
10:11 PM
There's definitely no perfect solution, but even going from a ±8 ms judder at 60 fps with no interpolation to that ±2ms judder is still a massive and perceptible improvement to the smoothness of motion.
 
10:51 PM
I really love the naïvity of Jeff Kaplan
In the current developer update he said, that there'll be a new game mode, where you can play as a regular character, or a buffed up version of one of the other characters (the "Yeti")
And you can choose which you prefer before the match
Who in the world would want to play as a normal character instead of something exclusive?
 
11:13 PM
Oh, Opus Magnum is out of Early Access.
 
did anything change?
 
I don't think so
 
11:31 PM
ok just wondering :)
I did life-sensing potion the other day
that was tricky
 

« first day (2681 days earlier)      last day (136 days later) »