zanedubya / ultimaxna Goto Github PK
View Code? Open in Web Editor NEWUltima Online client in C#/XNA
License: GNU General Public License v3.0
Ultima Online client in C#/XNA
License: GNU General Public License v3.0
Skills scroll - a client side gump that lists all skills that you can train. Skills are separated by category and further separated by active/passive. All trainable skills listed.
For some reason, UltimaXNA is not huing entities correctly, but only on some clients. I'm trying to figure out why that might be. To test whether the UI SpriteBatch and shader are displaying hues incorrectly, I implemented a HueTest debug screen, which you can display by hitting Ctrl-D at the Login screen.
Would everyone please post a screenshot of your HueTest screen?
Targeting code is spread in at least three different modules:
Let's either:
Just created new character and I cannot speak. Text is not appearing in typing line at all. After client restart, it works fine again.
Why not to port this from XNA to MonoGame? https://github.com/mono/MonoGame
If you don't know MonoGame is Open source XNA implementation that add support to many other platforms like Linux, android, iOS etc. It would be great to have it here!
Thank you Eskymak for letting me know about his project!
As a player, mobiles without shadows seem to be moving in the air. Adding shadows would make it clear that the mobiles are, in fact, on the ground.
After 1a75f6d, UltimaXNA prefers "Ultima Online Classic" installation directory, even if UOML directory was found before.
Since latest UO installer (was in wiki before) installs UO as "Ultima Online Classic", this version is not compatible with UltimaXNA, causing it not to load due to file format.
I would probably:
Reported by fwiffo2k:
What steps will reproduce the problem?
What is the expected output? What do you see instead?
I did expect to see a gump with all the items I can see in the character as it moves, but instead the PLATEARMS are missing, so there is a defect in gump visualization.
As a player, I expect UltimaXNA's single/double click handling to match the same functionality in the classic client. As part of this Issue, the client should be able to choose which mouse button is the 'command' input button, and which is the 'move' input button.
By default, the values should be:
LMB: Command button.
RMB: Move button.
FN1: Note that 'Items' are all Items that are not StaticItems.
FN2: Click-Hold for .5 seconds is equivalent to Click-Drag.
Currently, the Map contains Tiles, which contain MapObjects. Each frame, each Entity adds (or updates?) its MapObject within the associated Tile. Then, on draw, the Tile draws all of its MapObjects.
The dual Entity / MapObject is unnecessary, and an artifact of my implementing Clint's XNA renderer (he used MapObjects, and I pretty much bolted on his code to the client without considering how to re-implement the way it worked to better fit the client's code).
Instead, each Entity should belong to/exist within one MapTile, and on draw, the MapTile should be able to ask the Entity for its 'EntityView' object, which describes how that entity should be drawn.
In short:
Old Model:
OnUpdate: Each entity creates a MapObject, which is added to Tile.
OnDraw: Tile draws all MapObjects.
New Model:
OnUpdate: nothing.
OnDraw: Tile requests a EntityView for each Entity within that Tile, and draws these EntityViews.
The client does not yet support the built-in UO particle effects, which are
used for spells (amongst other things). The client should be able to support
these.
An easy way to generate a particle effect as a test is to use the [tele
command on RunUO: this will generate a cloudy effect at both your start and
destination location.
As a player, I want to be able to place houses using deeds, and see placed houses on the map.
In UltimaXNA, enemies occasionally move without first changing their facing. When this happens, the client should update the facing first.
What steps will reproduce the problem?
What is the expected output? What do you see instead?
In original client CTRL+Q gets last user written text.
More recent versions of the UO client have changed the data formats so that UltimaXNA cannot read it. We should indicate this and close the program gracefully, as opposed to failing to read the files and crashing.
If i message "asd" then "asd" again only just one "asd" shows up.
As a player, when I click-drag an item out of a container - picking it up under the cursor - I see other items disappear from the same container, only to reappear when the container is reopened. What is going on?
When server sends new item packet (0x1A) with changed hue game doesn't update this information.
As a player, I expect that all items will be loaded correctly from the server.
Try logging in next to a door or set of double doors. Walk several screens away. Then walk back to the original login point. The doors will be missing. What gives?
As a player, hearing footstep noises helps me associate how fast I am moving - as well as other (potentially hostile!) players. Footsteps should be audible for any mobile that is onscreen.
Right now, MovingEffects do not actually move through the world - they just despawn. They need to animate moving from source to target. Question: at what speed should they move?
Hues are handled differently by different objects. We should investigate huing and figure out how to make it match the legacy client.
Hello,
can you please provide solution file for VS2010 like it was until now?
Thanks
The client does not - I believe - handle lighting the same way the legacy client does.
We do not implement the local lighting level, just the area lighting level.
As part of this issue, make the shading of slopes less intensely dark.
Non-warmode cursor is dark grey instead of gold, compared to CC.
Not sure, if it ever had gold color.
The XNA client moves at the correct rate compared to the legacy client, but does not send movement messages at the correct rate. The correct frequencies are:
1/.4 seconds while walking.
1/.2 seconds while running or riding a trotting mount.
1/.1 seconds while riding a galloping mount.
What steps will reproduce the problem?
What is the expected output? What do you see instead?
In most if not all situations, the player should not be able to enter HTML code. We should always escape html characters that have been entered by the user.
Hold down the Ctrl key and Shift key to have the names of all nearby objects and targets appear (handy for reaching else unreachable items and targets).
Like in original client we need to support limited movement using arrow keys.
When a client sends a local chat message, that chat message should appear
above the sending player's avatar.
This overhead class could later be extended to include: targeting indicators,
health bars, nameplates, and a variety of other important additions to the
UI.
As part of this feature, rewrite text rendering to use a sprite batch object, and allow clicking on text to select the object that spawned the text.
As a player, I want to be able to change the dimensions of the Ultima Online client window.
Just putting this on the radar: does anyone know what changes would be necessary to support the latest client data format?
All Z positions received by client are == 0. What's going on here?
After using command ".add c_horse_gray"
If i target on ground nothing happens, if i target on my character on first click nothing happens after second click it shows "Targeting cancelled.".
The problem is that tiles are drawn one after the other, and any tiles drawn after a
large object like a dragon will inevitably overwrite it. I've fixed this for medium-
sized objects by making objects draw on the tile at (x+1, y+1) relative to their
situation. This is a kludge and creates its own bugs (for example, try walking
diagonally behind a sign post or a street lamp; you'll appear to be walking on top it
instead!)
The legacy client solves this problem by splitting up graphics that are wider than
one tile into multiple horizontal subgraphics and assigns each of those to a seperate
tile. It also seperates graphics vertically based on the (center) variable... any
pixels below the center of the image are split into seperate images.
So, take the dragon for example: it's four tiles wide, 80 pixels high, and has a
center of, say, -20. The dragon graphic would be split into 8 graphics: four across
for the tiles, 60 pixels high on the tiles row where it is centered, and 20 pixels
high on the tiles row at (x+1, y+1).
Even this is not perfect, and will present bugs in crowded environments (I only
figured out how the legacy client does this by creating a custom house, locking down
a dragon in the middle, and then creating walls until I saw overdraw artifacts where
the graphic splits were occurring). However, if we're going to stick with the current
TileEngine, this may be the best way to do it.
However, if/when we rewrite the TileEngine to use full 3D, this will no longer be a
problem because we'll be able to manage the z values much better.
As with any isometric game, Ultima Online has problems with rendered objects being overdrawn by subsequently rendered objects. This is easiest to see with large mobiles (dragons), particularly where their associated texture are large in the y dimension (such as when dragons travel north - their tails extend far into the y-dimension beyond the tile which they occupy).
I am uncertain how Ultima Online handles this problem, but I believe it (a) renders objects in columns of 44 pixels, and (b) renders each column of each object in the tile which its texture extends furthest into. You can see this for yourself if you locking down a dragon in a custom house, and placing walls below it (in the +x, +y direction).
I am considering what kind of DeferredRendering strategy would be best for UltimaXNA. Any input would be helpful.
Implement a Spellbook GUI.
Basic options menu
Full feature equal of default client's macro manager and macros needed.
As a player, I like seeing those little rain and snow particles. We should implement these.
As a player, when I toggle warmode (with tab, or using the paperdoll interface), I expect that I will be toggled into warmode. What I don't expect is that I will suddenly move as well! Obviously there is some bug in MobileMovement that is causing the client to send incorrect move requests to the server.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.