These are chat archives for ZaneDubya/UltimaXNA

14th
Sep 2015
Zane Wagner
@ZaneDubya
Sep 14 2015 00:09
Glad to hear that you figured it out! The desktop app is excellent most of the time - but frustratingly buggy 5% of the time.
I wish it had the ability to checkout pull requests from within the app interface. ... have to rely on the command line for that one.
Jeff Boulanger
@jeffboulanger
Sep 14 2015 00:35
you guys ever use SourceTree? best visual app around for git and mercurial
and free
Zane Wagner
@ZaneDubya
Sep 14 2015 13:37
I haven't but it looks great. I'll check it out this weekend.
so I've been thinking that rendering html textures is silly. Why don't I just set up a font texture atlas with all the characters pre-rendered and draw them as necessary? That would be, I think, a much better solution...
Zane Wagner
@ZaneDubya
Sep 14 2015 13:43
The sourcetree website shows images of the client running on the platform you use to view the website. That's clever!
So view on windows -> windows client; likewise for osx.
V
@TormentedEmu
Sep 14 2015 14:08
@ZaneDubya Would there be any reason why the client couldn't draw any item or text using any XNA color or must it use only the hues.mul colors?
Zane Wagner
@ZaneDubya
Sep 14 2015 14:25
No reason. If hue == 0 then the object is drawn with its own palette, taken from data within anim.mul or art.mul files. In addition, if the hue has the 0x8000 bit set, then the hue is 'partial' - only grayscale colors are hued.
There's also a 0x4000 bit, which sets transparency, but I haven't investigated that fully.
The partial hue allows, for example, white underwear on naked mobs regardless of their skin tone.
Jeff Boulanger
@jeffboulanger
Sep 14 2015 16:04
@ZaneDubya you think you can fit the entire unicode language on 1 texture atlas ? :)
You could do that for ASCII no problem, but im betting unicode would take some doing
Jeff Boulanger
@jeffboulanger
Sep 14 2015 16:12
Ideally though you are right, maping a texture atlas for all fonts is best
maybe you can figure out how to subdivide unicode based on local
localle?
how ever its spelled
Zane Wagner
@ZaneDubya
Sep 14 2015 16:59
A good point!
Zane Wagner
@ZaneDubya
Sep 14 2015 18:02
Lucky us, the ultima online unicode fonts do not include anywhere near the complete unicode code pages ;)
Jeff Boulanger
@jeffboulanger
Sep 14 2015 18:08
Thats awesome
So now you just need texture atlas, glyph map, done.
Zane Wagner
@ZaneDubya
Sep 14 2015 18:08
Right!
Jeff Boulanger
@jeffboulanger
Sep 14 2015 18:09
whats the range on the unicode ?
a-z0-9anythingelse?
[]'s
Zane Wagner
@ZaneDubya
Sep 14 2015 18:09
0-0xffff, but I'd hazard that at least 5/6 of the characters are empty. Probably more.
Jeff Boulanger
@jeffboulanger
Sep 14 2015 18:09
lol
interesting
Zane Wagner
@ZaneDubya
Sep 14 2015 18:10
Probably no need for them.
Jeff Boulanger
@jeffboulanger
Sep 14 2015 18:10
problem is
you are only restricting on english
you have no idea how big chinese is
:(
Zane Wagner
@ZaneDubya
Sep 14 2015 18:10
Oh no, I've looked at them all.
it's mostly empty.
Jeff Boulanger
@jeffboulanger
Sep 14 2015 18:11
i bet you chinese is pretty big
oh, weird
Zane Wagner
@ZaneDubya
Sep 14 2015 18:11
Nah, unicode is mostly empty.
Jeff Boulanger
@jeffboulanger
Sep 14 2015 18:11
that doesnt make sense
Zane Wagner
@ZaneDubya
Sep 14 2015 18:12
ah, I am so sorry, I'm mistaken.
Zane Wagner
@ZaneDubya
Sep 14 2015 18:12
First off, this is just 16bit unicode, as it turns out, you can go higher than that.
Jeff Boulanger
@jeffboulanger
Sep 14 2015 18:12
this is why i say something doesnt make sense
ya
unicode is huge
we couldnt have 1000 different emoji's otherwise
Zane Wagner
@ZaneDubya
Sep 14 2015 18:12
But UO doesn't implement much of the characters even within that 64k range.
Jeff Boulanger
@jeffboulanger
Sep 14 2015 18:13
sure
i just feel like chinese doesnt have a small "alphabet"
so why would it be mostly empty
Zane Wagner
@ZaneDubya
Sep 14 2015 18:16
haha, just looking at some of these characters...
... there are common scientific characters in there!
ns, us, rad, kW, kHz, etc.
Jeff Boulanger
@jeffboulanger
Sep 14 2015 18:17
ya, they dont have an alphabet really
all symbols
Zane Wagner
@ZaneDubya
Sep 14 2015 18:17
Origin/EA must have just bought these from a vendor as opposed to developing it in house!
Jeff Boulanger
@jeffboulanger
Sep 14 2015 18:27
worst case you might be able to do multiple texture atlas'
based on range
load on demand
Zane Wagner
@ZaneDubya
Sep 14 2015 22:05
I hope to finish Milestone 0.7 soon. The next thing I'd like to work on is making it easier for people to test, and for people to report crashes. To this end, I'd like to be able to print all the variables in the local context on a crash... Jeff, do you have any insight into how to do that?
Jeff Boulanger
@jeffboulanger
Sep 14 2015 22:06
No automatic way without producing a heap dump, and thats going ot be as big as your application is in memory (100+ mb)
Zane Wagner
@ZaneDubya
Sep 14 2015 22:06
Hmmmm.
Jeff Boulanger
@jeffboulanger
Sep 14 2015 22:07
Welcome to debugging ;)
Zane Wagner
@ZaneDubya
Sep 14 2015 22:07
That's a shame.
Hahaa!
:)
Jeff Boulanger
@jeffboulanger
Sep 14 2015 22:07
I dont think its helpful, even if you could
cause most of the time, those variables arent going to be meaningful
without context of the entire application
Zane Wagner
@ZaneDubya
Sep 14 2015 22:09
Many of the crashes occur because the variables aren't sanitized when they are set, or caught when they are read. For example, we just found a bug where an item texture was null because an item of type 0x2005 had been accidentally dumped into the world. Fixing the bug was easy - don't draw items that have no texture. But I'm sure there are tons of places in the code where a little (check if zero) or (check if null) statement would go a long way.
And given the crazy things that people do with their shards, I'm certain we would run into these situations ;)
Jeff Boulanger
@jeffboulanger
Sep 14 2015 22:24
This is why you need more Guard statements
Not only do Guard statements give you details, they stop the app from working under that condition, therefore making it reproducable, the error message is precise as to what happened.
I believe I added a Guard class with most validation reasons used a while back
It's missing a lot, but you can add things to it as needed
if you need like a range check
Guard.IsInRange(value, 0, 100);
stuff like that
Jeff Boulanger
@jeffboulanger
Sep 14 2015 22:29
RequireIsInRange*
public static void RequireIsInRange(int value, int min, int max, string message) { if (value < min || value > max) { throw new IndexOutOfRangeException(message); } }
Jeff Boulanger
@jeffboulanger
Sep 14 2015 22:45
I'd probably name it "RequireRange" lol