Skip to content

Commit

Permalink
Merge pull request #7 from SnowLune/dev
Browse files Browse the repository at this point in the history
version 1.0.0
  • Loading branch information
SnowLune authored Jun 23, 2022
2 parents 5f48c2f + 9b96875 commit e89236e
Show file tree
Hide file tree
Showing 17 changed files with 1,041 additions and 250 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
practicefieldexpanse.workshop.txt
practicefieldexpanse.*.txt
# ravensaidome.*.txt
ravensaidome.ow.txt
10 changes: 7 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ SHELL = /bin/bash
.SUFFIXES:
.SUFFIXES: .owh .ow

MODEFILE=practicefieldexpanse.workshop.txt
BUILDDATE=$(shell date -u +%Y%m%d)

MODENAME=ravensaidome
MODEFILE=$(MODENAME).ow.txt

FILES= \
src/main.owh \
Expand Down Expand Up @@ -53,8 +56,9 @@ FILES= \
src/ai/ai_Zenyatta.ow

$(MODEFILE): $(FILES)
cat $(FILES) | ./tools/overwatch_workshop_minifier.sh > $(MODEFILE)
cat $(MODEFILE) | clip.exe
cat $(FILES) > $(MODEFILE)
sed -i "s/__BUILDDATE__/$(BUILDDATE)/" $(MODEFILE)
./tools/overwatch_workshop_minifier.sh $(MODEFILE)

clean:
rm -f $(MODEFILE)
75 changes: 58 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,76 @@
# Practice Field: Expanse
Practice Field: Expanse is a sandbox practice game mode for the Overwatch Workshop.
# Raven's AI Dome

Raven's AI Dome is a sandbox practice game mode for the Overwatch
Workshop.

## Summary
Up to six players are spread across the map "Workshop Expanse". Each player is put in a bubble against an enemy dummy bot. The player kills the enemy bot and progresses to the next hero in the list when the "Kill Goal" is met. The player can select any hero they would like to practice on. The enemy spawn distances and play area will automatically be adapted to the optimal sizes for the chosen hero.

For more info, see: [Practice Field: Expanse](https://snowlune.github.io/PracticeFieldExpanse/)
Up to six players are spread across the map "Workshop Expanse". Each player is
put in a bubble against an enemy dummy bot. The player kills the enemy bot and
progresses to the next hero in the list when the "Kill Goal" is met. The player
can select any hero they would like to practice on. The enemy spawn distances
and play area will automatically be adapted to the optimal sizes for the chosen
hero.

For more info, see:
[Raven's AI Dome](https://snowlune.github.io/RavensAIDome/)

## Files
`src/` contains all the text files of groups of rules that are compiled into the mode file `practicefieldexpanse.workshop.txt` with Make.

`src/` contains all the text files of groups of rules that are compiled into the
mode file `ravensaidome.ow.txt` with Make.

## How to use
A premade release can be downloaded and imported into Overwatch right away. Just open `practicefieldexpanse.workshop.txt` in your favorite editor or notepad. Select All (ctrl-a), then Copy (ctrl-c).
The mode text file will now be in your clipboard. Go to Game Browser >> Create >> Settings. There will be an orange button in the top right that will paste from your clipboard when you click it.
Info: You can also import the code `5DPKQ` in Overwatch to get a recent build. However, sometimes this isn't always up to date with the git version.

A premade release can be downloaded and imported into Overwatch right away.

- Open `ravensaidome.ow.txt` in your favorite editor or notepad.
- Select All (**ctrl-a**), then Copy (**ctrl-c**). The mode text file will now
be in your clipboard.
- Go to the Game Browser in _Overwatch_ >> Create >> Settings. There will be an
orange button in the top right that will paste from your clipboard when you
click it.

**You can also import the code **`BWGAP`** in Overwatch to get a recent build.
However, sometimes this isn't always up to date with the git version.**

### How to build
I build under WSL2 Ubuntu, but any kind of linux with GNU Make should work.
From the project directory, run `make`. This creates `practicefieldexpanse.workshop.txt` which can be imported as described above.

I build under WSL2 Ubuntu, but any kind of linux with GNU Make should work. From
the project root directory, run `make`. This creates `ravensaidome.ow.txt` which can be
imported as described above.

## Additional Information
The mode itself is over 12,000 lines of text and reaching even the new Overwatch Workshop limit of 35,000 objects.

For this reason, it is __**NOT RECOMMENDED**__ to attempt to open it in the Workshop Editor within Overwatch, as it will almost surely crash your game client as it does mine. I use Visual Studio Code to edit and *highly* recommend it for anyone attempting to make a moderately large Overwatch Workshop mode. In my experience, hand-coding Workshop modes furthers understanding of Workshop actions and syntax. It also allows you to edit and think faster, ultimately creating better code.
The mode itself is over 12,000 lines of text and reaching even the new Overwatch
Workshop limit of 35,000 objects.

For this reason, it is \***\*NOT RECOMMENDED\*\*** to attempt to open it in the
Workshop Editor within Overwatch, as it will almost surely crash your game
client as it does mine. I use Visual Studio Code to edit and _highly_ recommend
it for anyone attempting to make a moderately large Overwatch Workshop mode. In
my experience, hand-coding Workshop modes furthers understanding of Workshop
actions and syntax. It also allows you to edit and think faster, ultimately
creating better code.

After a version is ready for release, I import it into a custom game, then recopy it and save *that* as the mode file. This formats the text and eliminates any parenthetical discrepancies, making math bugs easier to identify.
## Development History
I started this project in January 2020 as soon as the "Workshop Expanse" map was released on the PTR. The idea came from my first practice mode on the Practice Range that spawned random types of enemies and gave them *very* rudimentary movement. I knew I wanted something that would spawn enemies at random distances from me and facing a random direction. Initially I only intended it to be a small Widowmaker warm-up and flick practice mode. It is currently in the pre-release stage with changes happening rapidly.

I started this project in January 2020 as soon as the "Workshop Expanse" map was
released on the PTR. The idea came from my first practice mode on the Practice
Range that spawned random types of enemies and gave them _very_ rudimentary
movement. I knew I wanted something that would spawn enemies at random distances
from me and facing a random direction. Initially I only intended it to be a
small Widowmaker warm-up and flick practice mode. It is currently in the
pre-release stage with changes happening rapidly.

## Support Me
I've put more hours into this project than I have an any one job most likely. It's been a passion project, but I have put my soul
and *a lot* of time into it.

I've put more hours into this project than I have an any one job most likely.
It's been a passion project, but I have put my soul and _a lot_ of time into it.
Consider supporting me if you enjoy this project.

<pre><code>CashApp: $RavenQueenLuna
BTC: 3ApiPv3yjmZKo9T5SGSNTyNQVyPthobBEE
ETH: 0x3e1C67b95Db61f7F444bbDb74Dad8e2a689eA8a4
DOGE: DEAbvFjBbJb6yyABDjVrmJr8Z3Afi2qwSQ
Email snowluna@protonmail.com for different coin addresses not listed here</code></pre>

3 changes: 0 additions & 3 deletions docs/_config.yml

This file was deleted.

213 changes: 213 additions & 0 deletions docs/assets/css/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
@import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@570&display=swap");
:root {
--extra-dark-teal: hsl(189, 44%, 10%);
--dark-teal: rgb(138, 198, 209);
--light-teal: rgb(190, 235, 233);
--lighter-teal: hsl(177, 53%, 90%);
--dark-pink: rgb(255, 135, 176);
--light-pink: rgb(255, 195, 216);
--light-grey: rgb(230, 230, 230);
}

* {
margin: 0;
padding: 0;
box-sizing: border-box;
}

body {
background-color: var(--light-grey);
}

h1,
h2,
h3,
h4,
h5 {
font-family: "Montserrat", sans-serif;
font-weight: 700;
line-height: 1.3em;
}

header nav {
height: 80px;
background-color: var(--extra-dark-teal);
}

header nav ul {
display: flex;
justify-content: space-evenly;
align-items: center;
height: 100%;
}

header nav ul li a {
text-decoration: none;
padding: 20px;
height: 100%;
}

header nav ul li {
font-family: "Montserrat", sans-serif;
font-weight: 700;
font-size: 1.2em;
color: var(--dark-teal);
list-style: none;
}

header nav ul li:first-of-type {
font-size: 1.7em;
font-weight: 900;
color: var(--light-teal);
}

a,
a:visited,
a:hover,
a:active {
color: inherit;
}

header nav ul li a:hover {
color: var(--light-teal);
text-decoration: underline;
}

.main-content {
width: 100%;
max-width: 1024px;
margin: 0 auto;
padding: 0 25px;
}

.main-content p,
.main-content ul,
footer p,
footer .contact {
font-family: "Montserrat", sans-serif;
font-size: 1em;
font-weight: 200;
text-align: left;
line-height: 1.4em;
}

.main-content ul {
margin-left: 50px;
}

.main-content h2, .main-content h3 {
margin-top: 20px;
margin-bottom: 10px;
color: var(--extra-dark-teal);
}

.about {
display: flex;
align-items: center;
margin-top: 20px;
}

.about p,
.about h3 {
margin-top: 15px;
}

#about-text {
margin-left: 20px;
}

#hero {
width: 400px;
border-radius: 15px;
}

.donate {
text-align: center;
}

.donate sup {
font-family: Arial, Helvetica, sans-serif;
font-style: italic;
font-weight: bold;
}

.donate button {
width: 300px;
height: 60px;
background-color: var(--light-teal);
color: var(--extra-dark-teal);
border: 4px solid;
border-left-color: var(--light-teal);
border-top-color: var(--light-teal);
border-right-color: var(--dark-teal);
border-bottom-color: var(--dark-teal);
border-radius: 10px;
font-family: "Montserrat", sans-serif;
font-size: 1.25em;
font-weight: 700;
}

.donate button:hover {
background-color: var(--lighter-teal);
border-color: var(--dark-teal);
cursor: pointer;
}

footer {
background-color: var(--light-pink);
text-align: center;
width: 100%;
padding: 40px 0;
margin-top: 40px;
}

footer p {
max-width: 1024px;
margin: 0 auto;
text-align: center;
}

footer .contact {
display: flex;
flex-direction: column;
margin-top: 20px;
text-align: center;
font-size: 20px;
}

footer .contact li {
padding: 30px;
}

.cheeky {
font-style: italic;
}

.mode-name {
font-weight: bold;
font-style: italic;
}

.hero-name {
font-style: italic;
}

.battletag {
background-color: var(--dark-pink);
padding: 15px;
}

@media screen and (max-width: 800px) {
header nav {
height: 50px;
}

#hero {
width: 80%;
}
.about {
flex-direction: column;
}
}

/* @media only screen and (max-width: ) */
File renamed without changes
Loading

0 comments on commit e89236e

Please sign in to comment.