Code interpreter is pretty awesome, I've been using it everyday for other stuff, as I mentioned.
One could use it as a powerful tool to help facilitate the construction of a proprietary game off of the Unity engine, for example. You could even copy and paste outputs from terminals, and it will help you figure out errors, and find solutions in relatively short order.
it seems GPT4 can access the internet... I'd be interested to see what it could come up with for incrementally learning zscript based on the wiki, zscript basics and language reference, and gzdoom's own internal zscript (via github).
I have access to the preview model of ChatGPT o1, and I am very impressed with it! I am currently using it to work out some stuff in Linux, using some other software suites.
At any rate, I decided to test it out with a hypothetical zdoom custom enemy.
Prompt:
"Create a custom enemy in zdoom format that can jump attack, and teleport behind the player if reaching a low pain threshold at random. "
Response:
Thought for 31 seconds
Sure! Below is a custom enemy in DECORATE format for ZDoom that can perform a jump attack and has a chance to teleport behind the player when reaching a low health threshold.
plaintext
Copy code
ACTOR JumpingTeleporterDemon : DoomImp 30000
{
Health 200
Speed 10
Radius 20
Height 56
Mass 100
PainChance 100
SeeSound "grunt/sight"
PainSound "grunt/pain"
DeathSound "grunt/death"
ActiveSound "grunt/active"
Obituary "%o was outmaneuvered by a JumpingTeleporterDemon."
States
{
Spawn:
TROO A 10 A_Look
Loop
See:
TROO AABBCCDD 3 A_Chase
Loop
Melee:
TROO E 6 A_FaceTarget
TROO F 6 A_JumpIfCloser(64, "JumpAttack")
TROO G 6 A_CustomMeleeAttack
Goto See
JumpAttack:
TROO H 0 A_FaceTarget
TROO H 0 A_ChangeVelocity(10, 0, 5, CVF_RELATIVE|CVF_REPLACE)
TROO H 6 A_PlaySound("grunt/attack")
TROO H 6
TROO H 6
TROO H 6 A_CustomComboAttack
Goto See
Pain:
TROO I 3
TROO I 3 A_Pain
TROO I 0 A_JumpIfHealthLower(50, "CheckTeleport")
Goto See
CheckTeleport:
TROO I 0 A_Jump(128, "NoTeleport") // 50% chance to not teleport
TROO I 0 A_Warp(AAPTR_TARGET, -64, 0, 0, WARPF_TOFLOOR|WARPF_NOCHECKPOSITION|WARPF_WARPANGLE)
TROO I 0 A_PlaySound("grunt/teleport")
TROO I 0 A_FaceTarget
Goto See
NoTeleport:
Goto See
Death:
TROO J 8
TROO K 8 A_Scream
TROO L 8
TROO M 8 A_NoBlocking
TROO N -1
Stop
XDeath:
TROO O 5
TROO P 5 A_XScream
TROO Q 5 A_NoBlocking
TROO RST 5
TROO U -1
Stop
}
}
Explanation:
Jump Attack:
In the Melee state, the monster checks if the player is within a certain distance using A_JumpIfCloser.
If the player is close, it transitions to the JumpAttack state.
In JumpAttack, A_ChangeVelocity propels the monster forward and upward, simulating a jump.
A_CustomComboAttack is used to perform the attack during the jump.
Teleportation Behind the Player:
In the Pain state, the monster checks if its health is below a threshold (e.g., 50) using A_JumpIfHealthLower.
If the health is low, it goes to CheckTeleport, where there's a random chance (using A_Jump) to teleport.
A_Warp is used to teleport the monster behind the player (AAPTR_TARGET with a negative offset).
The monster then faces the player with A_FaceTarget and resumes chasing.
Note: Ensure that the sound effects like "grunt/attack" and "grunt/teleport" are defined in your sound definitions, or replace them with existing sounds.
Usage:
Copy the code into a text file with a .txt or .dec extension.
Include it in your ZDoom mod by adding it to your DECORATE lump or loading it as a separate file.
Place the monster in your map using its class name JumpingTeleporterDemon.
Test the monster thoroughly to make sure the behaviors work as expected in your specific setup.
Another interesting application of ChatGPT. This is the regular 4o model however, because I already reached the limit on o1 and it doesn't have an upload function yet.
At any rate, asked to look for duplicate entries in my old Aliens: the Ultimate Doom mod PK3, which I've neglected for a while.
pic.png
You do not have the required permissions to view the files attached to this post.
To identify potential errors beyond duplicate files in a `.PK3`, we can analyze common sources of issues such as:
1. **Incorrect File Paths or Directories**: Some Doom engines are sensitive to file paths and folder structures. If assets are not stored in the correct directories, it might prevent them from being loaded properly.
2. **Missing or Broken Assets**: Files referenced in scripts or maps might be missing or corrupted, leading to errors in gameplay.
3. **Malformed Metadata**: Issues with the `MAPINFO`, `DECORATE`, `SNDINFO`, or other metadata files can lead to errors in how assets are interpreted or referenced in the game.
I’ll perform a general analysis of the `.PK3` contents, including these common areas, to detect potential issues. Let me start by inspecting key metadata and folder structures for irregularities.
The `.PK3` file contains key metadata files such as `TEXTURE1`, `TEXTURE2`, and several `DECORATE` and `SNDINFO` files. These files are critical for defining textures, enemy behaviors, sound effects, and other in-game elements.
Here are some areas that might cause problems:
1. **Multiple DECORATE files**: The `.PK3` contains a lot of `DECORATE` files (e.g., `DECORATE.Smartgunner`, `DECORATE.XenomorphQueen`). If these files conflict in defining actors (e.g., enemies, projectiles), it can cause errors during gameplay. Make sure there are no redundant or contradictory actor definitions.
2. **SNDINFO files**: Multiple `SNDINFO` files (e.g., `SNDINFO.Weapons`, `SNDINFO.Enemies`) might cause sound issues if they reference the same sounds with different identifiers. Ensure sound definitions are consistent across all files.
3. **TEXTURE files**: The presence of both `TEXTURE1` and `TEXTURE2` can cause issues if there are conflicts in texture definitions. Ensure that all textures are properly referenced and don't overlap between these files.
To verify, I can further examine any of these files for possible conflicts or syntax issues. Would you like me to check any specific file in detail, or perform an automated scan for missing or malformed references?
I can confirm that not only can 4o can identify errors, it can fix it and it actually works!
Even better is that I was able to optimize my DECORATE file from having over 17,500 lines of code down to just 3450+ !
The file runs just fine, and you are able to circumvent the inability to save due to other errors via Slade, by just having the AI produce the file for you to download.
This seems like a very convenient way to clean up old mods, produce clean new ones, and ensure optimal performance.
Having to clean up the mod was a hurdle that would demotivate me from updating my old work. But now that I have discovered this function, I think I am going to make new versions in the near future.