Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - ACagliano

Pages: 1 [2] 3 4 ... 62
16
Hey all. It's been a while. I haven't posted much in terms of this project here, but it's been ongoing.

1) The project page at http://clrhome.org/startrek now has a sister: http://titrek.us. This is mostly due to me wanting to host the site for it on the same server as the game itself.
2) There is a web frontend for the game server: http://srv.titrek.us. This lets players log in to their game account to change their in-game names, email, password, sub to notifications about the game, alter the appearance of their ships/etc. The frontend is in the very early stages, but it's coming along.
3) I'm no longer working solo on this project. A number of people are assisting (or involved somehow) in this project. I am tackling the client side and web frontend of this thing pretty much solo (with beckadam and whoever else is good with raycasting helping with the rendering aspect). For calc=>computer=>server communication, we are awaiting the functionality of the TI USB Device lib. For the server itself, me, GregsAStar, and beckadam are working on the Python. The save files are JSON, the server will be running on UDP 1701 (for the registry number of the Enterprise). I am also hosting this entire project... git for the projects, the websites, and the game server itself, on a Raspberry Pi 4.
4) Additional help has come from EaghanScarlette and Pieman in the form of sprite work, and Eaghan has agreed to assist me with formulae for the behavior of certain celestial entities, to make the behavior of space, and forces like gravity, as accurate as possible.

Screenshots available at: http://titrek.us/gallery.php
Pre-alpha (GUI test, no real functionality yet) available at: http://titrek.us/downloads.php

17
UPDATE -- 0.53 alpha-ish

Ok, update time!!
This game took a bit of a hiatus, as many of my projects do from time to time because of real life, skill building, and other stuff.
However, I did some code reorganization at the start of the summer, then set out on an endeavor to have a working demo of basic combat (single player) by the end of the summer.

Attached is the current pre-demo release. This version is functional but has no AI or rendering engine yet. That is what I'm working on now... 3d rendering, weapons and targeting, then wrapping everything up, optimizing, and releasing. That being said, I'll talk about some of the cool features already implemented:

1. Ship Status Icon
At the lower, left side of the screen there is an icon that shows your ship and your shields. As your ship takes damage, you'll notice the shields first. They start off electric blue, then degrade to yellow, then to red. Additionally, within the ship itself, which is normally grey, sections of the ship will turn red as systems are damaged. Hull integrity causes a small filled red circle when it reaches <50% in the saucer that gets larger when hull integrity fails. In addition to that, the nacelles turn red when the warp drive is below 50%, the aft of the ship turns red when impulse, life support, or the warp core fall below 50%. As of now, this icon is locked to an Enterprise-ish shape, as are the indicators. If/when I allow icons to be customized, I'll have to modify this to match.

2. Warp Core Failure
When the warp core system is damaged to less than 25% health, the program begins attempting to trigger a warp core breach. The odds of a core breach are 1 / system health * 10. So, for a warp core at 24% health, the odds of a breach occurring are 1/240. If the warp core is at 10% health, the odds become 1/100. Once a breach is successfully trigged, a timer begins. You get 1000 game cycles to avert the breach or your ship is destroyed. I have yet to clock how long that actually is. You can avert the breach by (1) Repairing the warp core to above 50% health (see Repair), or (2) Pressing the [Del] key to eject the warp core. The ejection occurs and spawns a critical warp core behind your ship, on a slow trajectory moving backwards (relative to you). Doing so immediately stops all power flow to your ship, meaning if you have no auxiliary power module installed or no warp core to refill the slot with, you'll lose power fast! The counter continues from whatever it was at when you ejected it, and then explodes in a MASSIVE detonation that can significantly damage your ship if you're too close.

3. Power, Inventory, Core Breach, Life Support Alerts
When any one of these four things need attention, there is an alert dedicated to them. The power icon appears when any module is unable to fulfill its power requirements, meaning that your power generation is no longer effective enough to keep your ship powered. This means that it is time to (1) Bring unessential systems offline, (2) Repair your warp core (the health of your core determines your ship's power output), or (3) Switch to an auxiliary power module (if installed).
The Inventory status alert appears when an active torpedo module has exhausted it's supply of selected torpedoes (unimplemented).
The core breach alert appears when a warp core breach has been triggered, and will disappear if the core is repaired or ejected.
The life support alert appears when the life support system hits 0% health or is turned offline. If life support is not repaired and brought back online within 2000 game cycles, your crew dies and you lose.

4. Repairing Your Ship
Any module may be repaired, including shields and hull integrity. Repairing a module stops it from being supplied power, stops it from functioning, and expends a lot of power to repair it. Every 5 game cycles, the module draws its current power default and gives itself 1 unit of health. For a starting ship, this means that it takes a module 250 game cycles to fully repair to 50 health, and costs 250 power to do so.
* A repairing module is treated as OFFLINE. This means that if you are repairing your shields, they will not function. If you're repairing your hull integrity, it will not give you extra damage protection. If you are repairing your warp core, it will stop generating power. The only modules that will function while being repaired are your engines (warp drive/impulse) and your weapon systems.*

5. Damage Calculation
Damage in game occurs as two factors: shield damage and hull damage. Phasers or other energy weapons deal more damage to your shields than to your hull, while torpedoes will deal more damage to your hull than your shields. Notable exceptions will be the Narada torpedoes that will deal staggering damage regardless and disruptor phasers, which will be somewhat balanced against both.
First, the current health and current power configuration of your shields are calculated and multiplied by the shield's damage resistance value. This is the amount of damage that your shield is capable of repelling at 100% health and 100% power. To start, this number is 5. Most weapons you'll encounter at first will deal 1-3 damage. If your shields are at, for example, 60% health, they will be capable of blocking only 3 damage. If you were to then set your shields to use 200% power, they would become able to block 6 damage. In this way, you can boost your systems to help you out in combat, but at a cost (see Boosting).
The shield damage value of the weapon is subtracted from the shield's health, resulting in shield damage. The calculated damage resistance value is subtracted from the weapon's hull damage. If this value becomes 0 or less at any time, we stop calculating damage.
We then read out the damage resistance value of your hull integrity module. If hull integrity is 50% or higher, that number is subtracted from the weapon damage. If hull integrity is <50% but above 0%, the damage resistance becomes 0. If hull integrity is 0%, the module's damage resistance is added to the incoming damage. This emulates a damaged hull becoming less effective at protecting the interior from damage. Any remaining damage is applied to a system currently chosen at random, but eventually to be chosen based on the direction of the incoming weapon compared to the direction of your ship, allowing you to target specific areas.

6. Boosting Systems
Any system, except the warp core, may be boosted to allow it to perform more effectively. Here's a list of what boosting a generic system will do:
Shields: Increase damage resistance
Hull integrity: increase damage resistance
Life Support: unable to be altered
Warp Core: unable to be altered
Warp Drive: Increases maximum attainable warp speed (to a max of +5 speed)
Impulse Drive: Increases maximum attainable impulse speed (to a max of +2 speed)
Sensors: Increases maximum sensor range/targeting range
Phasers: Increases phaser damage
Torpedoes: Increases torpedo speed
Transporters: Increases transporter range
* A boosted system will use power at a faster rate than it is being recharged, and eventually run out of power and stop working. Use boosting sparingly. *

7. Warp/Impulse Speeds
The ship has 4 average impulse speeds:
1 field / cycle = 1/4 impulse
2 fields / cycle = half impulse
3 fields / cycle = 3/4 impulse
4 fields / cycle = full impulse
certain ship types and a boosted impulse module will allow additional speeds < 10.
A damaged impulse module reduces the maximum impulse speed.
The ship has warp factors 1-9, with speeds in between the major warp factors. Each warp factor increases the speed by it's factor.
Warp 1 = 10 fields / cycle
Warp 2 = 12 fields / cycle
Warp 3 = 15 fields / cycle
Warp 4 = 19 fields / cycle
Warp 5 = 24 fields / cycle
Warp 6 = 30 fields / cycle
Warp 7 = 37 fields / cycle
Warp 8 = 45 fields / cycle
Warp 9 = 54 fields / cycle
boosted warp core max = 59 fields / cycle
Intermediary warp factors supported, for example, 16 fields / cycle equals Warp 3.5.
A damaged Warp Drive module decreases the maximum speed to a minimum of 10 (warp 1) unless the module is completely destroyed.



18
Update

An alpha demo is almost here. Got pretty much all the basic combat systems complete. Just have to add in phaser/torpedo sprites, rendering, and target tracking. Then work out any bugs in the firing/movement/rendering system. Here's an image with the demo opponent, a Borg sphere, rendered on screen.

19
I've been talking about it for a while. Asking questions about how to do this or that. But without any real progress.

Scroll down for a question I have about ship/terrain assets.

Well as of the past week or so, that has changed. I sat down, turned off my Minecraft (with great internal suffering) and got to work. Over the past week, I succeeded in creating the shields, the major non-combat systems, damage reception, power control, and more.

At this point in time, there is no networking implemented and the file is quite large (~15kb). Much of this is due to graphics and AI calculations which, when networking is implemented will no longer be present. The intent is also to hold graphics server-side and send the relevant sprites to the calc during runtime, which will be saved in a temporary assets file. Also, as Kerm told me that CALCnet will likely not be a thing for the CE due to differences in network protocol, I'll probably use the existing USB protocol on the CE with a computer side program to send data to the hub, which would have the ability to interact with connected CE's and CALCnet, allowing the color and monochromes to play on one server. I'll also open source this when done to allow it to be ported to the CSE.

But more on that later. I have very little left to do before I can release a demo. Basically just AI ship control, player ship control, rendering the viewscreen, and firing. In the scope of what I've done already, that shouldn't take too long.

Now, feast your eyes on some screenshots:









The Question:

This game is played in a virtual 3D world. The map objects and ships are technically 3D. My question is, would it be better, both in terms of rendering speed and data size, to create several versions of each sprite, to view the object from different angles, or to create full 3D models for the ships and the spherical map objects (the irregular objects will be rendered differently). For full 3D, I could make 16x16x16 models for each item, leading to an overhead of 4096 bytes per object, which if it's in an external assets file on the CE isn't a major issue. When this game eventually gets backwards-ported to the monochrome calcs, we'd be talking about 512 bytes per object.

If the common consensus is the latter (3d models), is there someone here who has experience making them?

20
TI Z80 / Re: Yahtzee, Axe edition RC 1
« on: July 31, 2016, 04:05:28 pm »
Sorry for the reply delay in this. Since my old calculator is broken, link wise, i cannot update this program myself so anyone who wants to can fix or modify anything needing it and repost and add their name to it.

On to the reported bugs/issues:
1. I could have sworn that was actually put in there and had no effect? I can have a look at the source later and update.
2. That is something that could be added, certainly.
3. I thought Enter was a more straightforward key for entering something lol. But if the lot of you agree it should be moved, we can move it.
4. Thats a RNG thing. I forget how I set up the seed. If memory serves, it was simply rand as provided in Axe.
5. Also, doable.
6. I was worried about screen space for a lot of stuff. In the current setup, the points tally next to the selection for the 1-6's is your indicator of whether or not you achieved that bonus. I could toss a character in it. There seems to be room.

Dice rolling: the program was already getting high in size, so i did without animations. I might make a version for the CE that is a little better.

Thanks for the feedback. Happy to finally have a decent, nice looking project out for people to use (i dont exactly count my polynomials program on that list haha)

That last issue is very strange. I thought all kinks with the SS/LS finding algorithm were worked out, but it seems to still be there. I'll look into it and report what i find.

21
TI Z80 / Re: Yahtzee, Axe edition RC 1
« on: February 11, 2016, 08:31:00 pm »
Ok, some changes.

1. A complete rework the GUI. The High and Low score is moved to the left half of the top of the screen, the combo score and bonus points are moved into an inset in that top roll.

2. The combo listing is moved down, and the selected combo box is inverted. Already used combos are rendered with an X across them. When hovered over, the scored combo for that item is rendered, rather than the point value for the current roll.

3. The last box on the top row now sums the points for the first 6.

4. Die are reset after a roll. Default is a ? symbol. Screenshot and version enclosed.

22
TI Z80 / Re: Yahtzee, Axe edition RC 1
« on: February 10, 2016, 10:15:26 am »
- highlight the combos you've used already (XOR a black square over them) so you can easily see which combos you've already used.
- Replace the 'used' text with the points you scored for that combo
I could do that.

- Perhaps up/down could move the cursor to the other row? If you want things to line up, you can make the USED/score box the same size as the YATZ box.
I could also do that. Not too concerned about lining up exactly, but we'll see.

- A way to see how many points you have in the top row (i believe it's 63 points you need to get the bonus)
- Turn off the run indicator. The hex code for bcall(_RunIndicOff) is EF7045. Axe may have another way to do this.
- It might be better to notify you that you're getting the +35, at first i thought it was a calculation glitch (eg. for 3 6's, it'd show 18+35 or something or have a text or button appear saying "BONUS").

I could create separate score and bonus boxes. However, currently, a + symbol appears to the far right of the score box when a bonus is being applied.

- After selecting a combo, it might be better to clear the dice. Also, a rolling animation would look nice :)
Sorry, but the program is already 6000 bytes. I wanted smaller, but animations are going to make the program even larger.

23
TI Z80 / Re: Yahtzee, Axe edition RC 1
« on: February 09, 2016, 10:52:43 am »
Ok, update.

- as I believe this version is stable, the b has been removed from the version string
- getKey^r switched to a getCSC loop (getKey)
- roll key changed to [2nd]. Help Screen updated to reflect this.
- Hold on Roll 0 bug fixed
- Multiple Yahtzees changed to a Yahtzee Bonus

Screenshot updated has some graphical glitches I think root in jStified, since they do not occur at all on my calculator. I'll poke Kerm and see what he has to say.

24
TI Z80 / Re: Yahtzee, Axe edition RC 1
« on: February 08, 2016, 09:56:29 pm »
Can I then store getKey to a variable? Like 
Code: [Select]
EndIf getKey->G

25
TI Z80 / Re: Yahtzee, Axe edition RC 1
« on: February 08, 2016, 08:29:36 pm »
Fixes for everything except the [2nd] + [ON] leak. GUI improvement. I'm waiting for Runer, so I can ask him about some of the other Axe keyscanning options.

26
TI Z80 / Re: Yahtzee, Axe edition RC 1
« on: February 08, 2016, 01:51:30 pm »
By key list do you mean like in the help menu? I think you could leave it as it is ([mode] brings up the help screen) or perhaps add an entry to the main menu or a [mode]=? button on screen. Personally i'd prefer to see all my combos.

Ok, I can do that.

And your loop should more or less get turned into that asm code, i'm not familiar with Axe but in your program try pressing [2nd]+[On]. You'll exit your program and the RAM your program occupied won't be freed (a massive RAM leak).

Ah, I was not aware of that happening. Looking in the Axe documentation, I think there is a version of getKey that uses the OS's version (scancode?). I did notice that, in the game, [2nd] and [Alpha] are still active as they normally are (something that's been bugging me, since I like using [2nd] as a primary key). I'll fix that and report back.

The way it works is, if you score more than one Yahtzee, you score again against an additional combo before rolling again.
You mean the second time around you get the fifty points and then pick another combo? The problem currently is you can just continually choose Yahtzee and get an infinite amount of points, at least until the counter overflows. I think i always just played after the first Yahtzee any others will give you 100 points, but with your way at least prevent the player from chosing another Yahtzee ;)

Well there are different ways of handling the scoring. In some programs I've seen you can score Yahtzee again, and then another combo. In others, you can score another combo and get a 50 point bonus. Both ways accomplish the same result, but I believe the latter might actually be better, require less coding, and be less bug-prone. I'll work on this and post back.

Btw, i forgot how much i love playing this game :D Please post when you get the new GUI ready!

I love it too. I actually had a handheld Yahtzee thing, but it broke, so that's why I made this haha. And will do, ofc. Thanks for the comprehensive bug reports :p

27
TI Z80 / Re: Yahtzee, Axe edition RC 1
« on: February 08, 2016, 10:11:48 am »
I would just use a loop with _GetCSC, in asm:
waitKey:
bcall(_GetCSC)
or a
jr z,waitKey

I tested the game again and it seems to work pretty well, it'd be nice to be able to see all the sets at once. Also, when you pick your points after rolling, the dice aren't rolled again, you can choose to hold dice from the previous roll. I'm not sure what exactly happened, but i held dice until i eventually got a Yahtzee, and the second time i choose Yahtzee it wouldn't let me roll anymore, all i could do was press enter to get more points (see screenshot). I just tried it again and the same thing happened. Getting two Yahtzees (or maybe getting a Yahtzee after holding all five cards?) prevents you from being able to roll the dice anymore.

the game is Axe, not asm, so I can't choose. I used getKey^r because it waits for a key, so I save a loop.

The way it works is, if you score more than one Yahtzee, you score again against an additional combo before rolling again.

Lastly, I found the thing with Holding before the first roll myself on a playthrough and fixed it. That was indeed a bug, or moreover an oversight on my part. Thanks. I have improved the UI, but before spending time on it, I wanted to ensure the fundamentals work.

As for seeing all the sets on screen, in the new GUI i might have room for it, but I did want to put some of the key bindings right on the main screen. So I'll ask this here, how many people would vastly prefer all combo's shown on screen? Or would a key list be preferred?

28
TI Z80 / Re: Yahtzee, Axe edition RC 1
« on: February 06, 2016, 09:54:09 pm »
Why are you using GetKey? Also, i'd either disable interrupts or turn off the run indicator (_RunIndicOff or resetting the bit in indicFlags).

What are the keys? I get to the screen where you have the five boxes, but there are no die or anything. I can select the boxes using the f1-f5 keys, but nothing else. The game screen looks a bit plain, but it's a nice start :) I played Yahtzee a ton in school, i believe this was the game i used to play, perhaps you could use it for some inspiration:
http://www.ticalc.org/archives/files/fileinfo/191/19190.html

The keys are as follows:

[Math] - roll
Left/Right - cycle combos
Enter - score combo
Mode - show help
Clear - quit

And what would you recommend I use other than getKey? I used that bc it waits for a key, which saves me a loop.

ps: I do agree the score/combo section of the interface could be a bit...nicer.

29
TI Z80 / Re: Yahtzee, Axe edition RC 1
« on: February 05, 2016, 05:59:27 pm »
Here is RC 1 of the Yahtzee Axe game. Please test and report any bugs/GUI glitches found here

30
TI Z80 / Re: Yahtzee, Axe edition bugs
« on: February 04, 2016, 12:29:49 pm »
I wish I could test this, but I only have a CE now. Could it and Project Slender be ported?

Slender is on hold, since right now I only have time for small projects. I'll be continuing it hopefully in about a month-ish. For those reason, I've opened Slender access to the community. The info to access the repo is below:

Code: [Select]
Server Name: acagliano.no-ip.biz
User: git
Password: tiCalcDevs
Path to game source: /home/git/repos/slender1.git
Supported commands: Anything related to git, and scp.

And sure it can be ported, I just don't know the language, nor do I have the CE so I'd need to have someone who does fork it.

* In related news (slender fan film) *
Spoiler For Spoiler:
there is a Slender fan film in production, headed by me and a few friends who either like making movies or like horror. I created a funding campaign at http://gofundme.com/slender-origins if anyone is interested in donating. Also, anyone who wants to help in other ways like ideas/set ideas or even joining (NY area) can PM me.

Here I have enclosed the source file and executable file for the Yahtzee game. Current untraceable bugs:

1. Saferam L1 not clearing after a Fill(), a looped zero, and other means of zero-ing the data

I stepped through both instances of Fill(L1,...) in a debugger, and both are behaving correctly. If there's any unexpected data there after this, you must be putting it there. :P

That was my fear, which will make this way harder. Only thing I can think of is the CONTINUE label somehow being executed. I'll look when I get home from work later, but if in the meantime, you or anyone sees anything that could cause that, do poke me :)

Pages: 1 [2] 3 4 ... 62